@@ -113,10 +113,7 @@ public function refactor(Node $node): ?Node
113113 return null ;
114114 }
115115
116- $ genericKeyType = $ this ->constantToGenericType ($ returnedType ->getKeyType ());
117- $ genericItemType = $ this ->constantToGenericType ($ returnedType ->getItemType ());
118-
119- $ genericTypeNode = $ this ->createArrayGenericTypeNode ($ genericKeyType , $ genericItemType );
116+ $ genericTypeNode = $ this ->createGenericArrayTypeFromConstantArrayType ($ returnedType );
120117
121118 $ returnTagValueNode = new ReturnTagValueNode ($ genericTypeNode , '' );
122119 $ phpDocInfo ->addTagValueNode ($ returnTagValueNode );
@@ -151,10 +148,29 @@ private function constantToGenericType(Type $type): Type
151148 return new MixedType ();
152149 }
153150
154- private function createArrayGenericTypeNode (Type $ keyType , Type $ itemType ): GenericTypeNode
151+ private function createGenericArrayTypeFromConstantArrayType (ConstantArrayType $ constantArrayType ): GenericTypeNode
152+ {
153+ $ genericKeyType = $ this ->constantToGenericType ($ constantArrayType ->getKeyType ());
154+
155+ $ itemType = $ constantArrayType ->getItemType ();
156+ if ($ itemType instanceof ConstantArrayType) {
157+ $ genericItemType = $ this ->createGenericArrayTypeFromConstantArrayType ($ itemType );
158+ } else {
159+ $ genericItemType = $ this ->constantToGenericType ($ itemType );
160+ }
161+
162+ return $ this ->createArrayGenericTypeNode ($ genericKeyType , $ genericItemType );
163+ }
164+
165+ private function createArrayGenericTypeNode (Type $ keyType , Type |GenericTypeNode $ itemType ): GenericTypeNode
155166 {
156167 $ keyDocTypeNode = $ this ->staticTypeMapper ->mapPHPStanTypeToPHPStanPhpDocTypeNode ($ keyType );
157- $ itemDocTypeNode = $ this ->staticTypeMapper ->mapPHPStanTypeToPHPStanPhpDocTypeNode ($ itemType );
168+
169+ if ($ itemType instanceof Type) {
170+ $ itemDocTypeNode = $ this ->staticTypeMapper ->mapPHPStanTypeToPHPStanPhpDocTypeNode ($ itemType );
171+ } else {
172+ $ itemDocTypeNode = $ itemType ;
173+ }
158174
159175 return new GenericTypeNode (new IdentifierTypeNode ('array ' ), [$ keyDocTypeNode , $ itemDocTypeNode ]);
160176 }
0 commit comments