diff --git a/packages/NodeTypeResolver/NodeTypeCorrector/GenericClassStringTypeCorrector.php b/packages/NodeTypeResolver/NodeTypeCorrector/GenericClassStringTypeCorrector.php index 52d4526547f..f13fcba0afb 100644 --- a/packages/NodeTypeResolver/NodeTypeCorrector/GenericClassStringTypeCorrector.php +++ b/packages/NodeTypeResolver/NodeTypeCorrector/GenericClassStringTypeCorrector.php @@ -4,6 +4,7 @@ namespace Rector\NodeTypeResolver\NodeTypeCorrector; +use PHPStan\Reflection\ClassReflection; use PHPStan\Reflection\ReflectionProvider; use PHPStan\Type\Constant\ConstantStringType; use PHPStan\Type\Generic\GenericClassStringType; @@ -26,11 +27,18 @@ public function correct(Type $mainType): Type return $traverseCallback($traversedType); } - if (! $this->reflectionProvider->hasClass($traversedType->getValue())) { + $value = $traversedType->getValue(); + if (! $this->reflectionProvider->hasClass($value)) { return $traverseCallback($traversedType); } - return new GenericClassStringType(new ObjectType($traversedType->getValue())); + /** @var ClassReflection $classReflection */ + $classReflection = $this->reflectionProvider->getClass($value); + if ($classReflection->getName() !== $value) { + return $traverseCallback($traversedType); + } + + return new GenericClassStringType(new ObjectType($value)); }); } } diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/class_string_case_insensitive.php.inc b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/class_string_case_insensitive.php.inc new file mode 100644 index 00000000000..619c2861e7c --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/class_string_case_insensitive.php.inc @@ -0,0 +1,29 @@ +value = 'classStringCaseInSensitive'; + } +} + +?> +----- +value = 'classStringCaseInSensitive'; + } +} + +?> diff --git a/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/class_string_case_sensitive.php.inc b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/class_string_case_sensitive.php.inc new file mode 100644 index 00000000000..29ba6a5af3b --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector/Fixture/class_string_case_sensitive.php.inc @@ -0,0 +1,29 @@ +value = 'ClassStringCaseSensitive'; + } +} + +?> +----- + + */ + public $value; + public function set() + { + $this->value = 'ClassStringCaseSensitive'; + } +} + +?>