44
55use BackedEnum ;
66use Doctrine \ORM \EntityManagerInterface ;
7- use Doctrine \ORM \Mapping \ClassMetadata ;
87use Doctrine \ORM \Mapping \ClassMetadataInfo ;
98use Doctrine \ORM \Query ;
109use Doctrine \ORM \Query \AST ;
3534use PHPStan \Type \TypeTraverser ;
3635use PHPStan \Type \TypeUtils ;
3736use PHPStan \Type \UnionType ;
37+ use function array_key_exists ;
3838use function array_map ;
3939use function assert ;
4040use function class_exists ;
5656 *
5757 * It extends SqlkWalker because AST\Node::dispatch() accepts SqlWalker only
5858 *
59- * @phpstan-type QueryComponent array{metadata: ClassMetadata<object>, parent: mixed, relation: ?array{orderBy: array<array-key, string>, indexBy: ?string, fieldName: string, targetEntity: string, sourceEntity: string, isOwningSide: bool, mappedBy: string, type: int}, map: mixed, nestingLevel: int, token: mixed}
59+ * @phpstan-import- type QueryComponent from Parser
6060 */
6161class QueryResultTypeWalker extends SqlWalker
6262{
@@ -229,6 +229,7 @@ public function walkPathExpression($pathExpr)
229229 $ fieldName = $ pathExpr ->field ;
230230 $ dqlAlias = $ pathExpr ->identificationVariable ;
231231 $ qComp = $ this ->queryComponents [$ dqlAlias ];
232+ assert (array_key_exists ('metadata ' , $ qComp ));
232233 $ class = $ qComp ['metadata ' ];
233234
234235 assert ($ fieldName !== null );
@@ -516,6 +517,7 @@ public function walkFunction($function)
516517 $ dqlAlias = $ function ->pathExpression ->identificationVariable ;
517518 $ assocField = $ function ->pathExpression ->field ;
518519 $ queryComp = $ this ->queryComponents [$ dqlAlias ];
520+ assert (array_key_exists ('metadata ' , $ queryComp ));
519521 $ class = $ queryComp ['metadata ' ];
520522 $ assoc = $ class ->associationMappings [$ assocField ];
521523 $ assocClassName = $ assoc ['targetEntity ' ];
@@ -756,9 +758,11 @@ public function walkSelectExpression($selectExpression)
756758 if (is_string ($ expr )) {
757759 $ dqlAlias = $ expr ;
758760 $ queryComp = $ this ->queryComponents [$ dqlAlias ];
761+ assert (array_key_exists ('metadata ' , $ queryComp ));
759762 $ class = $ queryComp ['metadata ' ];
760763 $ resultAlias = $ selectExpression ->fieldIdentificationVariable ?? $ dqlAlias ;
761764
765+ assert (array_key_exists ('parent ' , $ queryComp ));
762766 if ($ queryComp ['parent ' ] !== null ) {
763767 return '' ;
764768 }
@@ -785,6 +789,7 @@ public function walkSelectExpression($selectExpression)
785789
786790 $ dqlAlias = $ expr ->identificationVariable ;
787791 $ qComp = $ this ->queryComponents [$ dqlAlias ];
792+ assert (array_key_exists ('metadata ' , $ qComp ));
788793 $ class = $ qComp ['metadata ' ];
789794
790795 [$ typeName , $ enumType ] = $ this ->getTypeOfField ($ class , $ fieldName );
0 commit comments