@@ -89,9 +89,11 @@ public static function resolve(TypeNode $node, \ReflectionClass|\ReflectionFunct
8989 return self ::resolveConstType ($ node , $ declaringClass , $ ref );
9090 }
9191
92- if ($ node instanceof $ innerTypes = array_map(fn ($ t ) => self ::resolve ($ t , $ ref , $ thisObj ), $ node ->genericTypes );
92+ if ($ node instanceof GenericTypeNode) {
93+ $ genericType = self ::resolve ($ node ->type , $ ref , $ thisObj );
94+ $ innerTypes = array_map (fn ($ t ) => self ::resolve ($ t , $ ref , $ thisObj ), $ node ->genericTypes );
9395
94- return new GnericTypeNode (
96+ return new GenericTypeNode (
9597 $ genericType instanceof IdentifierTypeNode ? $ genericType : $ node ->type ,
9698 $ innerTypes ,
9799 $ node ->variances
@@ -143,14 +145,14 @@ public static function resolve(TypeNode $node, \ReflectionClass|\ReflectionFunct
143145 }
144146
145147 if ($ node instanceof UnionTypeNode) {
146- return new UnionTypeNode (array_map (fn ($ t ) => self ::resolve ($ t , $ ref , $ thisObj ), $ node ->types ));
148+ return new UnionTypeNode (array_map (fn ($ t ) => self ::resolve ($ t , $ ref , $ thisObj ), $ node ->types ));
147149 }
148150
149- if ($ node intanceof IntersectionTypeNode ) {
150- return new IntersectionTypeNode (array_map (fn ($ t ) => self ::resolve ($ t , $ ref , $ thisObj ), $ node ->types ));
151+ if ($ node instanceof IntersectionTypeNode) {
152+ return new IntersectionTypeNode (array_map (fn ($ t ) => self ::resolve ($ t , $ ref , $ thisObj ), $ node ->types ));
151153 }
152154
153- return $ node
155+ return $ node;
154156 }
155157
156158 /**
@@ -179,9 +181,9 @@ public static function resolveForFile(TypeNode $node, string $file): TypeNode
179181
180182 if ($ node instanceof GenericTypeNode) {
181183 $ genericType = self ::resolveForFile ($ node ->type , $ file );
182- $ innerTypes = array_map (fn ($ t ) => self ::resolveForFile ($ t , $ file ), $ node ->genericTypes );
184+ $ innerTypes = array_map (fn ($ t ) => self ::resolveForFile ($ t , $ file ), $ node ->genericTypes );
183185
184- return new GenricTypeNode (
186+ return new GenericTypeNode (
185187 $ genericType instanceof IdentifierTypeNode ? $ genericType : $ node ->type ,
186188 $ innerTypes ,
187189 $ node ->variances
@@ -233,12 +235,7 @@ public static function resolveForFile(TypeNode $node, string $file): TypeNode
233235 }
234236
235237 if ($ node instanceof UnionTypeNode) {
236- return new UnionTypeNode (array_map (fn ($ t ) => self ::resolveForFile ($ t , $ file ), $ node ->types ));
237- }
238-
239- if ($ node instnceof IntersectionTypeNode ) {
240- return new IntersectionTypeNode (array_map (fn ($ t ) => self ::resolveForFile ($ t , $ file ), $ node ->types ));
241- (fn ($ t ) => self ::resolveForFile ($ , $ file ), $ node ->types ));
238+ return new UnionTypeNode (array_map (fn ($ t ) => self ::resolveForFile ($ t , $ file ), $ node ->types ));
242239 }
243240
244241 if ($ node instanceof IntersectionTypeNode) {
@@ -248,8 +245,6 @@ public static function resolveForFile(TypeNode $node, string $file): TypeNode
248245 return clone $ node ;
249246 }
250247
251- // --- Private Helper Extractions for Reflection Context ---
252-
253248 /**
254249 * @param \ReflectionClass<object>|\ReflectionFunction|\ReflectionMethod|string $context
255250 *
@@ -344,7 +339,15 @@ private static function resolveOffsetAccess(OffsetAccessTypeNode $node, \Reflect
344339 if ($ baseType instanceof ConstTypeNode && $ baseType ->constExpr instanceof ConstFetchNode) {
345340 $ resolvedNode = self ::resolveConstantOffsetValue ($ baseType ->constExpr ->className , $ baseType ->constExpr ->name , $ offsetKey );
346341 if ($ resolvedNode !== null ) {
347- /**
342+ return $ resolvedNode ;
343+ }
344+ }
345+ }
346+
347+ return new OffsetAccessTypeNode ($ baseType , $ offsetType );
348+ }
349+
350+ /**
348351 * @param \ReflectionClass<object>|\ReflectionFunction|\ReflectionMethod $ref
349352 */
350353 private static function resolveArrayShape (ArrayShapeNode $ node , \ReflectionClass |\ReflectionFunction |\ReflectionMethod $ ref , ?object $ thisObj ): ArrayShapeNode
@@ -356,15 +359,13 @@ private static function resolveArrayShape(ArrayShapeNode $node, \ReflectionClass
356359 $ className = null ;
357360 $ constName = null ;
358361
359- // --- LIVE CI DEBUG LOGGING ---
360362 $ debugClass = $ keyName !== null ? get_class ($ keyName ) : 'null ' ;
361363 $ debugVal = $ keyName !== null && method_exists ($ keyName , '__toString ' ) ? (string ) $ keyName : 'unknown ' ;
362364 fwrite (\STDERR , "\n[DEBUG] ArrayShapeItem KeyType: {$ debugClass } | Value: {$ debugVal }\n" );
363365
364366 if ($ keyName instanceof IdentifierTypeNode) {
365367 fwrite (\STDERR , "[DEBUG] IdentifierName: {$ keyName ->name }\n" );
366368 }
367- // -----------------------------
368369
369370 if ($ keyName instanceof ConstFetchNode && $ keyName ->className !== '' ) {
370371 $ className = $ keyName ->className ;
@@ -374,13 +375,11 @@ private static function resolveArrayShape(ArrayShapeNode $node, \ReflectionClass
374375 [$ className , $ constName ] = explode (':: ' , $ keyName ->name , 2 );
375376 }
376377
377- // --- MORE DEBUG LOGGING ---
378378 if ($ className !== null && $ constName !== null ) {
379379 fwrite (\STDERR , "[DEBUG] Split into Class: {$ className } | Const: {$ constName }\n" );
380380 } else {
381381 fwrite (\STDERR , "[DEBUG] Did NOT split into Class and Const. \n" );
382382 }
383- // --------------------------
384383
385384 if ($ className !== null && $ constName !== null ) {
386385 $ lowerClassName = strtolower ($ className );
@@ -424,10 +423,6 @@ private static function resolveArrayShape(ArrayShapeNode $node, \ReflectionClass
424423 $ unsealedType = new ArrayShapeUnsealedTypeNode ($ unsealedValue , $ unsealedKey );
425424 }
426425
427- return ArrayShapeNode::createUnsealed ($ items , $ unsealedType , $ node ->kind );
428- }nsealedTypeNode ($ unsealedValue , $ unsealedKey );
429- }
430-
431426 return ArrayShapeNode::createUnsealed ($ items , $ unsealedType , $ node ->kind );
432427 }
433428
0 commit comments