From c402987db675896ba281ad49f0a4e44bef35b0f7 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 5 Jul 2025 00:29:08 +0900 Subject: [PATCH] wip --- src/Type/ParserNodeTypeToPHPStanType.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/Type/ParserNodeTypeToPHPStanType.php b/src/Type/ParserNodeTypeToPHPStanType.php index e616fffc0e..5210d12887 100644 --- a/src/Type/ParserNodeTypeToPHPStanType.php +++ b/src/Type/ParserNodeTypeToPHPStanType.php @@ -23,6 +23,24 @@ public static function resolve($type, ?ClassReflection $classReflection): Type { if ($type === null) { return new MixedType(); + } elseif ($type instanceof Identifier && $type->isSpecialClassName()) { + // !!! + $typeClassName = (string) $type; + $lowercasedClassName = strtolower($typeClassName); + if ($classReflection !== null && in_array($lowercasedClassName, ['self', 'static'], true)) { + if ($lowercasedClassName === 'static') { + return new StaticType($classReflection); + } + $typeClassName = $classReflection->getName(); + } elseif ( + $lowercasedClassName === 'parent' + && $classReflection !== null + && $classReflection->getParentClass() !== null + ) { + $typeClassName = $classReflection->getParentClass()->getName(); + } + + return new ObjectType($typeClassName); } elseif ($type instanceof Name) { $typeClassName = (string) $type; $lowercasedClassName = strtolower($typeClassName);