From 1e1d65e7399a3faacdb0f25bc9e67d62ca4127de Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 24 Nov 2024 13:17:09 +0700 Subject: [PATCH 1/3] [CodeQuality] Handle aliased object type on DynamicDocBlockPropertyToNativePropertyRector --- .../Fixture/aliased_class.php.inc | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc new file mode 100644 index 00000000000..935f20dd3f7 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc @@ -0,0 +1,36 @@ +someDependency = new SomeSource\SomeDependency(); + } +} + +?> +----- +someDependency = new SomeSource\SomeDependency(); + } +} + +?> From 19431d52755e7b84ad07224807a9fe4ac60218d9 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 24 Nov 2024 13:17:58 +0700 Subject: [PATCH 2/3] fix --- src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php b/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php index b0dc7d296d2..6ed4ddb195a 100644 --- a/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php +++ b/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php @@ -70,14 +70,10 @@ public function mapToPhpParserNode(Type $type, string $typeKind): ?Node return new Name('self'); } - if ($type instanceof ShortenedObjectType) { + if ($type instanceof ShortenedObjectType || $type instanceof AliasedObjectType) { return new FullyQualified($type->getFullyQualifiedName()); } - if ($type instanceof AliasedObjectType) { - return new Name($type->getClassName()); - } - if ($type instanceof FullyQualifiedObjectType) { $className = $type->getClassName(); From ea73380436e2fc05922d3382f20e0a4f7fa46bbc Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 24 Nov 2024 13:24:48 +0700 Subject: [PATCH 3/3] fix --- .../Fixture/aliased_class.php.inc | 2 +- .../Fixture/bare_class.php.inc | 2 +- .../Fixture/improve_existing_property_type.php.inc | 2 +- .../Fixture/include_null.php.inc | 2 +- .../Fixture/some_test.php.inc | 2 +- .../Fixture/with_other_existing_attribute.php.inc | 2 +- rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php | 6 +++--- src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc index 935f20dd3f7..0bfb02d19b6 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/aliased_class.php.inc @@ -26,7 +26,7 @@ use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativeProper final class AliasedClass { - private ?\Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency $someDependency; + private ?SomeSource\SomeDependency $someDependency; public function run(): void { $this->someDependency = new SomeSource\SomeDependency(); diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/bare_class.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/bare_class.php.inc index bd35375ab18..850a717c860 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/bare_class.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/bare_class.php.inc @@ -26,7 +26,7 @@ use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativeProper final class BareClass { - private ?\Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency $someDependency; + private ?SomeDependency $someDependency; public function run(): void { $this->someDependency = new SomeDependency(); diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/improve_existing_property_type.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/improve_existing_property_type.php.inc index 1eef510f6be..737c89bcc6f 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/improve_existing_property_type.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/improve_existing_property_type.php.inc @@ -31,7 +31,7 @@ use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativeProper final class ImproveExistingPropertyType extends TestCase { - private \Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency $someDependency; + private SomeDependency $someDependency; protected function setUp(): void { parent::setUp(); diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/include_null.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/include_null.php.inc index 582ef425fa3..5dae4a8961e 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/include_null.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/include_null.php.inc @@ -23,7 +23,7 @@ use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativeProper final class IncludeNull { - protected ?\Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency $someDependency = null; + protected ?SomeDependency $someDependency = null; } ?> diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/some_test.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/some_test.php.inc index 85dfee2299d..cf1db2fa1cd 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/some_test.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/some_test.php.inc @@ -29,7 +29,7 @@ use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativeProper final class SomeTest extends TestCase { - private ?\Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency $someDependency; + private ?SomeDependency $someDependency; protected function setUp(): void { parent::setUp(); diff --git a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/with_other_existing_attribute.php.inc b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/with_other_existing_attribute.php.inc index 12fa3c20eaa..4b1c1ce2742 100644 --- a/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/with_other_existing_attribute.php.inc +++ b/rules-tests/CodeQuality/Rector/Class_/DynamicDocBlockPropertyToNativePropertyRector/Fixture/with_other_existing_attribute.php.inc @@ -28,7 +28,7 @@ use Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativeProper #[\OtherAttribute] final class WithOtherExistingAttribute { - private ?\Rector\Tests\CodeQuality\Rector\Class_\DynamicDocBlockPropertyToNativePropertyRector\Source\SomeDependency $someDependency; + private ?SomeDependency $someDependency; public function run(): void { $this->someDependency = new SomeDependency(); diff --git a/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php b/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php index 200c365199b..b6ae5ec6605 100644 --- a/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php +++ b/rules/TypeDeclaration/PHPStan/ObjectTypeSpecifier.php @@ -153,16 +153,16 @@ private function processAliasedObject( ): ?AliasedObjectType { // A. is alias in use statement matching this class alias if ($alias === $className) { - return new AliasedObjectType($alias, $fullyQualifiedName); + return new AliasedObjectType($className, $fullyQualifiedName); } // B. is aliased classes matching the class name if ($useName === $className) { - return new AliasedObjectType($alias, $fullyQualifiedName); + return new AliasedObjectType($className, $fullyQualifiedName); } if (str_starts_with($className, $alias . '\\')) { - return new AliasedObjectType($alias, $fullyQualifiedName . ltrim($className, $alias)); + return new AliasedObjectType($className, $fullyQualifiedName . ltrim($className, $alias)); } return null; diff --git a/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php b/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php index 6ed4ddb195a..29236bf7973 100644 --- a/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php +++ b/src/PHPStanStaticTypeMapper/TypeMapper/ObjectTypeMapper.php @@ -71,7 +71,7 @@ public function mapToPhpParserNode(Type $type, string $typeKind): ?Node } if ($type instanceof ShortenedObjectType || $type instanceof AliasedObjectType) { - return new FullyQualified($type->getFullyQualifiedName()); + return new Name($type->getClassName()); } if ($type instanceof FullyQualifiedObjectType) {