Skip to content

Commit ea0b174

Browse files
committed
Allow empty array shape
1 parent edb31b3 commit ea0b174

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/Parser/TypeParser.php

+4
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,10 @@ private function tryParseArray(TokenIterator $tokens, Ast\Type\TypeNode $type):
345345
private function parseArrayShape(TokenIterator $tokens, Ast\Type\TypeNode $type): Ast\Type\ArrayShapeNode
346346
{
347347
$tokens->consumeTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET);
348+
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) {
349+
return new Ast\Type\ArrayShapeNode([]);
350+
}
351+
348352
$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
349353
$items = [$this->parseArrayShapeItem($tokens)];
350354

tests/PHPStan/Parser/TypeParserTest.php

+12
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,18 @@ public function provideParseData(): array
975975
]
976976
),
977977
],
978+
[
979+
'array{}',
980+
new ArrayShapeNode([]),
981+
],
982+
[
983+
'array{}|int',
984+
new UnionTypeNode([new ArrayShapeNode([]), new IdentifierTypeNode('int')]),
985+
],
986+
[
987+
'int|array{}',
988+
new UnionTypeNode([new IdentifierTypeNode('int'), new ArrayShapeNode([])]),
989+
],
978990
];
979991
}
980992

0 commit comments

Comments
 (0)