diff --git a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/prevent_duplication.php.inc b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/prevent_duplication.php.inc deleted file mode 100644 index d3ef75ca8bc..00000000000 --- a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/prevent_duplication.php.inc +++ /dev/null @@ -1,32 +0,0 @@ - ------ - diff --git a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/instance_of.php.inc b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_instance_of.php.inc similarity index 50% rename from rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/instance_of.php.inc rename to rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_instance_of.php.inc index 173bad67663..bde72ece06d 100644 --- a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/instance_of.php.inc +++ b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_instance_of.php.inc @@ -25,31 +25,3 @@ final class ImportPartialInstanceOf } ?> ------ - diff --git a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/keep_static_method.php.inc b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_keep_static_method.php.inc similarity index 50% rename from rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/keep_static_method.php.inc rename to rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_keep_static_method.php.inc index 91d516ff7a4..db94464f878 100644 --- a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/keep_static_method.php.inc +++ b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_keep_static_method.php.inc @@ -18,24 +18,3 @@ abstract class KeepStaticMethod } ?> ------ - diff --git a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_prevent_duplication.php.inc b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_prevent_duplication.php.inc new file mode 100644 index 00000000000..592d8bd8343 --- /dev/null +++ b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_prevent_duplication.php.inc @@ -0,0 +1,15 @@ + diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/class_imported_as_alias.php.inc b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/class_imported_as_alias.php.inc deleted file mode 100644 index f741e1423ca..00000000000 --- a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/class_imported_as_alias.php.inc +++ /dev/null @@ -1,23 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/partial_expression.php.inc b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/partial_expression.php.inc deleted file mode 100644 index dd0368a73bf..00000000000 --- a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/partial_expression.php.inc +++ /dev/null @@ -1,31 +0,0 @@ - ------ - diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_class_imported_as_alias.php.inc b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_class_imported_as_alias.php.inc new file mode 100644 index 00000000000..a13348d94ad --- /dev/null +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_class_imported_as_alias.php.inc @@ -0,0 +1,11 @@ + diff --git a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_partial_expression.php.inc b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_partial_expression.php.inc new file mode 100644 index 00000000000..8dffc00fd25 --- /dev/null +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_partial_expression.php.inc @@ -0,0 +1,15 @@ + diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php index 69dae6f76a0..aa60f75fdca 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php @@ -69,6 +69,10 @@ public function shouldSkipNameForFullyQualifiedObjectType(File $file, Node $node */ public function shouldSkipName(FullyQualified $fullyQualified, array $uses): bool { + if ($this->isWrittenPartiallyQualified($fullyQualified)) { + return true; + } + if (substr_count($fullyQualified->toCodeString(), '\\') === 1) { return $this->isFunctionOrConstantImport($fullyQualified); } @@ -99,6 +103,19 @@ public function shouldSkipName(FullyQualified $fullyQualified, array $uses): boo return false; } + /** + * Keep names written as "Field\TextField" or "namespace\Sub\Foo" as they are + */ + private function isWrittenPartiallyQualified(FullyQualified $fullyQualified): bool + { + $originalName = $fullyQualified->getAttribute(AttributeKey::ORIGINAL_NAME); + if (! $originalName instanceof Name) { + return false; + } + + return $originalName->isQualified() || $originalName->isRelative(); + } + private function isFunctionOrConstantImport(FullyQualified $fullyQualified): bool { if ($fullyQualified->getAttribute(AttributeKey::IS_CONSTFETCH_NAME) === true) { diff --git a/tests/Issues/AutoImport/Fixture/do_not_rename_different_namespaced_function.php.inc b/tests/Issues/AutoImport/Fixture/do_not_rename_different_namespaced_function.php.inc deleted file mode 100644 index 96ca045cb02..00000000000 --- a/tests/Issues/AutoImport/Fixture/do_not_rename_different_namespaced_function.php.inc +++ /dev/null @@ -1,23 +0,0 @@ - ------ - ------ - diff --git a/tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc b/tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc deleted file mode 100644 index 3bbd9928c55..00000000000 --- a/tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc +++ /dev/null @@ -1,29 +0,0 @@ - ------ - diff --git a/tests/Issues/AutoImport/Fixture/skip_do_not_rename_different_namespaced_function.php.inc b/tests/Issues/AutoImport/Fixture/skip_do_not_rename_different_namespaced_function.php.inc new file mode 100644 index 00000000000..48c7dbd32c9 --- /dev/null +++ b/tests/Issues/AutoImport/Fixture/skip_do_not_rename_different_namespaced_function.php.inc @@ -0,0 +1,11 @@ + diff --git a/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc b/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc new file mode 100644 index 00000000000..490ede9ca06 --- /dev/null +++ b/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc @@ -0,0 +1,13 @@ + diff --git a/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc b/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc new file mode 100644 index 00000000000..122aac7a1d0 --- /dev/null +++ b/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc @@ -0,0 +1,13 @@ + diff --git a/tests/Issues/AutoImportAliasedNamespace/AutoImportAliasedNamespaceTest.php b/tests/Issues/AutoImportAliasedNamespace/AutoImportAliasedNamespaceTest.php new file mode 100644 index 00000000000..e9ca63ae3c5 --- /dev/null +++ b/tests/Issues/AutoImportAliasedNamespace/AutoImportAliasedNamespaceTest.php @@ -0,0 +1,28 @@ +doTestFile($filePath); + } + + public static function provideData(): Iterator + { + return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); + } + + public function provideConfigFilePath(): string + { + return __DIR__ . '/config/configured_rule.php'; + } +} diff --git a/tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc b/tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc new file mode 100644 index 00000000000..37c9d567f04 --- /dev/null +++ b/tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc @@ -0,0 +1,47 @@ + +----- + diff --git a/tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc b/tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc new file mode 100644 index 00000000000..02e26bc7293 --- /dev/null +++ b/tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc @@ -0,0 +1,14 @@ +withImportNames(); diff --git a/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_class.php.inc b/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_class.php.inc deleted file mode 100644 index 21e92a6d9fa..00000000000 --- a/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_class.php.inc +++ /dev/null @@ -1,23 +0,0 @@ - ------ - diff --git a/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_single_namespace.php.inc b/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_single_namespace.php.inc deleted file mode 100644 index e21b79a1171..00000000000 --- a/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_single_namespace.php.inc +++ /dev/null @@ -1,31 +0,0 @@ - ------ - diff --git a/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc b/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc new file mode 100644 index 00000000000..7469ca4ef37 --- /dev/null +++ b/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc @@ -0,0 +1,11 @@ + diff --git a/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_single_namespace.php.inc b/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_single_namespace.php.inc new file mode 100644 index 00000000000..05645e155b3 --- /dev/null +++ b/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_single_namespace.php.inc @@ -0,0 +1,15 @@ +