Skip to content

Commit

Permalink
Allow empty array shape
Browse files Browse the repository at this point in the history
  • Loading branch information
ondrejmirtes committed Jun 11, 2021
1 parent edb31b3 commit ea0b174
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/Parser/TypeParser.php
Expand Up @@ -345,6 +345,10 @@ private function tryParseArray(TokenIterator $tokens, Ast\Type\TypeNode $type):
private function parseArrayShape(TokenIterator $tokens, Ast\Type\TypeNode $type): Ast\Type\ArrayShapeNode
{
$tokens->consumeTokenType(Lexer::TOKEN_OPEN_CURLY_BRACKET);
if ($tokens->tryConsumeTokenType(Lexer::TOKEN_CLOSE_CURLY_BRACKET)) {
return new Ast\Type\ArrayShapeNode([]);
}

$tokens->tryConsumeTokenType(Lexer::TOKEN_PHPDOC_EOL);
$items = [$this->parseArrayShapeItem($tokens)];

Expand Down
12 changes: 12 additions & 0 deletions tests/PHPStan/Parser/TypeParserTest.php
Expand Up @@ -975,6 +975,18 @@ public function provideParseData(): array
]
),
],
[
'array{}',
new ArrayShapeNode([]),
],
[
'array{}|int',
new UnionTypeNode([new ArrayShapeNode([]), new IdentifierTypeNode('int')]),
],
[
'int|array{}',
new UnionTypeNode([new IdentifierTypeNode('int'), new ArrayShapeNode([])]),
],
];
}

Expand Down

0 comments on commit ea0b174

Please sign in to comment.