Skip to content

Commit c3761a0

Browse files
committed
CallableTypeNode tests
1 parent 4c9c7ab commit c3761a0

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

Diff for: tests/PHPStan/Parser/PhpDocParserTest.php

+63
Original file line numberDiff line numberDiff line change
@@ -1773,6 +1773,69 @@ public function provideReturnTagsData(): Iterator
17731773
),
17741774
]),
17751775
];
1776+
1777+
yield [
1778+
'valid CallableTypeNode without space after "callable"',
1779+
'/** @return callable(int, string): void */',
1780+
new PhpDocNode([
1781+
new PhpDocTagNode(
1782+
'@return',
1783+
new ReturnTagValueNode(
1784+
new CallableTypeNode(new IdentifierTypeNode('callable'), [
1785+
new CallableTypeParameterNode(new IdentifierTypeNode('int'), false, false, '', false),
1786+
new CallableTypeParameterNode(new IdentifierTypeNode('string'), false, false, '', false),
1787+
], new IdentifierTypeNode('void'), []),
1788+
'',
1789+
),
1790+
),
1791+
]),
1792+
];
1793+
1794+
yield [
1795+
'valid CallableTypeNode with space after "callable"',
1796+
'/** @return callable (int, string): void */',
1797+
new PhpDocNode([
1798+
new PhpDocTagNode(
1799+
'@return',
1800+
new ReturnTagValueNode(
1801+
new CallableTypeNode(new IdentifierTypeNode('callable'), [
1802+
new CallableTypeParameterNode(new IdentifierTypeNode('int'), false, false, '', false),
1803+
new CallableTypeParameterNode(new IdentifierTypeNode('string'), false, false, '', false),
1804+
], new IdentifierTypeNode('void'), []),
1805+
'',
1806+
),
1807+
),
1808+
]),
1809+
];
1810+
1811+
yield [
1812+
'valid IdentifierTypeNode with space after "callable" turns the rest to description',
1813+
'/** @return callable (int, string) */',
1814+
new PhpDocNode([
1815+
new PhpDocTagNode(
1816+
'@return',
1817+
new ReturnTagValueNode(new IdentifierTypeNode('callable'), '(int, string)'),
1818+
),
1819+
]),
1820+
];
1821+
1822+
yield [
1823+
'invalid CallableTypeNode without space after "callable"',
1824+
'/** @return callable(int, string) */',
1825+
new PhpDocNode([
1826+
new PhpDocTagNode(
1827+
'@return',
1828+
new InvalidTagValueNode('callable(int, string)', new ParserException(
1829+
'(',
1830+
4,
1831+
20,
1832+
27,
1833+
null,
1834+
1,
1835+
)),
1836+
),
1837+
]),
1838+
];
17761839
}
17771840

17781841

0 commit comments

Comments
 (0)