@@ -611,6 +611,8 @@ private function parseArrayShape(TokenIterator $tokens, Ast\Type\TypeNode $type,
611
611
/** @phpstan-impure */
612
612
private function parseArrayShapeItem (TokenIterator $ tokens ): Ast \Type \ArrayShapeItemNode
613
613
{
614
+ $ startLine = $ tokens ->currentTokenLine ();
615
+ $ startIndex = $ tokens ->currentTokenIndex ();
614
616
try {
615
617
$ tokens ->pushSavePoint ();
616
618
$ key = $ this ->parseArrayShapeKey ($ tokens );
@@ -619,12 +621,22 @@ private function parseArrayShapeItem(TokenIterator $tokens): Ast\Type\ArrayShape
619
621
$ value = $ this ->parse ($ tokens );
620
622
$ tokens ->dropSavePoint ();
621
623
622
- return new Ast \Type \ArrayShapeItemNode ($ key , $ optional , $ value );
624
+ return $ this ->enrichWithAttributes (
625
+ $ tokens ,
626
+ new Ast \Type \ArrayShapeItemNode ($ key , $ optional , $ value ),
627
+ $ startLine ,
628
+ $ startIndex
629
+ );
623
630
} catch (ParserException $ e ) {
624
631
$ tokens ->rollback ();
625
632
$ value = $ this ->parse ($ tokens );
626
633
627
- return new Ast \Type \ArrayShapeItemNode (null , false , $ value );
634
+ return $ this ->enrichWithAttributes (
635
+ $ tokens ,
636
+ new Ast \Type \ArrayShapeItemNode (null , false , $ value ),
637
+ $ startLine ,
638
+ $ startIndex
639
+ );
628
640
}
629
641
}
630
642
@@ -634,6 +646,9 @@ private function parseArrayShapeItem(TokenIterator $tokens): Ast\Type\ArrayShape
634
646
*/
635
647
private function parseArrayShapeKey (TokenIterator $ tokens )
636
648
{
649
+ $ startIndex = $ tokens ->currentTokenIndex ();
650
+ $ startLine = $ tokens ->currentTokenLine ();
651
+
637
652
if ($ tokens ->isCurrentTokenType (Lexer::TOKEN_INTEGER )) {
638
653
$ key = new Ast \ConstExpr \ConstExprIntegerNode ($ tokens ->currentTokenValue ());
639
654
$ tokens ->next ();
@@ -660,7 +675,12 @@ private function parseArrayShapeKey(TokenIterator $tokens)
660
675
$ tokens ->consumeTokenType (Lexer::TOKEN_IDENTIFIER );
661
676
}
662
677
663
- return $ key ;
678
+ return $ this ->enrichWithAttributes (
679
+ $ tokens ,
680
+ $ key ,
681
+ $ startLine ,
682
+ $ startIndex
683
+ );
664
684
}
665
685
666
686
/**
0 commit comments