Skip to content

Commit 941a889

Browse files
committed
Fix typos and improve type handling in SpecialTypeResolver; correct GenericTypeNode instantiation and enhance debug logging
1 parent 2f15e6e commit 941a889

1 file changed

Lines changed: 20 additions & 25 deletions

File tree

src/Resolver/SpecialTypeResolver.php

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)