From 6f2010b1f2623c005d4b0d6a0a31a80cfb105f65 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sat, 14 Nov 2026 21:39:53 +0100 Subject: [PATCH] [CodingStyle] Import plain partially qualified names again, keep Doctrine/Symfony aliases covered Revert the partially qualified name guard from #8932: a node copied from another file keeps its partially qualified originalName and was left fully qualified instead of imported. Aliased names like ORM\Column and Assert\Length are already kept, so keep regression fixtures for them using the Doctrine and Symfony stubs. --- ...nstance_of.php.inc => instance_of.php.inc} | 28 +++++++++++ ...hod.php.inc => keep_static_method.php.inc} | 21 +++++++++ .../Fixture/prevent_duplication.php.inc | 32 +++++++++++++ .../Fixture/skip_prevent_duplication.php.inc | 15 ------ .../class_imported_as_alias.php.inc | 23 +++++++++ .../partial_expression.php.inc | 31 ++++++++++++ .../skip_class_imported_as_alias.php.inc | 11 ----- .../skip_partial_expression.php.inc | 15 ------ .../ClassNameImportSkipper.php | 17 ------- ...name_different_namespaced_function.php.inc | 23 +++++++++ .../Fixture/inner_with_subnamespace.php.inc | 29 ++++++++++++ .../Fixture/inner_with_subnamespace2.php.inc | 29 ++++++++++++ ...name_different_namespaced_function.php.inc | 11 ----- .../skip_inner_with_subnamespace.php.inc | 13 ----- .../skip_inner_with_subnamespace2.php.inc | 13 ----- .../fully_qualified_still_imported.php.inc | 47 ------------------- .../Fixture/skip_aliased_attribute.php.inc | 14 ------ .../Fixture/skip_aliased_docblock.php.inc | 18 ------- .../Fixture/skip_aliased_new.php.inc | 15 ------ .../skip_doctrine_symfony_annotations.php.inc | 24 ++++++++++ .../skip_doctrine_symfony_attributes.php.inc | 19 ++++++++ .../skip_doctrine_symfony_in_code.php.inc | 16 +++++++ ... skip_doctrine_with_direct_import.php.inc} | 6 +-- .../Fixture/skip_plain_namespace_use.php.inc | 13 ----- ...skip_plain_namespace_use_attribute.php.inc | 15 ------ .../skip_plain_namespace_use_docblock.php.inc | 18 ------- .../Fixture/skip_relative_name.php.inc | 11 ----- .../Source/Constraints/Choice.php | 12 ----- .../Source/Constraints/NotBlank.php | 12 ----- .../Source/Field/TextField.php | 12 ----- .../Source/Mapping/Column.php | 12 ----- .../Source/Mapping/Entity.php | 12 ----- .../Fixture/namespaced_use_class.php.inc | 23 +++++++++ .../namespaced_use_single_namespace.php.inc | 31 ++++++++++++ .../Fixture/skip_namespaced_use_class.php.inc | 11 ----- ...ip_namespaced_use_single_namespace.php.inc | 15 ------ 36 files changed, 332 insertions(+), 335 deletions(-) rename rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/{skip_instance_of.php.inc => instance_of.php.inc} (50%) rename rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/{skip_keep_static_method.php.inc => keep_static_method.php.inc} (50%) create mode 100644 rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/prevent_duplication.php.inc delete mode 100644 rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_prevent_duplication.php.inc create mode 100644 rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/class_imported_as_alias.php.inc create mode 100644 rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/partial_expression.php.inc delete mode 100644 rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_class_imported_as_alias.php.inc delete mode 100644 rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_partial_expression.php.inc create mode 100644 tests/Issues/AutoImport/Fixture/do_not_rename_different_namespaced_function.php.inc create mode 100644 tests/Issues/AutoImport/Fixture/inner_with_subnamespace.php.inc create mode 100644 tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc delete mode 100644 tests/Issues/AutoImport/Fixture/skip_do_not_rename_different_namespaced_function.php.inc delete mode 100644 tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc delete mode 100644 tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_docblock.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_new.php.inc create mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_doctrine_symfony_annotations.php.inc create mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_doctrine_symfony_attributes.php.inc create mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_doctrine_symfony_in_code.php.inc rename tests/Issues/AutoImportAliasedNamespace/Fixture/{skip_aliased_with_direct_import.php.inc => skip_doctrine_with_direct_import.php.inc} (51%) delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_plain_namespace_use.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_plain_namespace_use_attribute.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_plain_namespace_use_docblock.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Fixture/skip_relative_name.php.inc delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Source/Constraints/Choice.php delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Source/Constraints/NotBlank.php delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Source/Field/TextField.php delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Source/Mapping/Column.php delete mode 100644 tests/Issues/AutoImportAliasedNamespace/Source/Mapping/Entity.php create mode 100644 tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_class.php.inc create mode 100644 tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_single_namespace.php.inc delete mode 100644 tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc delete mode 100644 tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_single_namespace.php.inc diff --git a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_instance_of.php.inc b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/instance_of.php.inc similarity index 50% rename from rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_instance_of.php.inc rename to rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/instance_of.php.inc index bde72ece06d..173bad67663 100644 --- a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_instance_of.php.inc +++ b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/instance_of.php.inc @@ -25,3 +25,31 @@ final class ImportPartialInstanceOf } ?> +----- + diff --git a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_keep_static_method.php.inc b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/keep_static_method.php.inc similarity index 50% rename from rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_keep_static_method.php.inc rename to rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/keep_static_method.php.inc index db94464f878..91d516ff7a4 100644 --- a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_keep_static_method.php.inc +++ b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/keep_static_method.php.inc @@ -18,3 +18,24 @@ abstract class KeepStaticMethod } ?> +----- + 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 new file mode 100644 index 00000000000..d3ef75ca8bc --- /dev/null +++ b/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/prevent_duplication.php.inc @@ -0,0 +1,32 @@ + +----- + 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 deleted file mode 100644 index 592d8bd8343..00000000000 --- a/rules-tests/CodingStyle/Rector/Namespace_/ImportFullyQualifiedNamesRector/Fixture/skip_prevent_duplication.php.inc +++ /dev/null @@ -1,15 +0,0 @@ - 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 new file mode 100644 index 00000000000..f741e1423ca --- /dev/null +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/class_imported_as_alias.php.inc @@ -0,0 +1,23 @@ + +----- + 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 new file mode 100644 index 00000000000..dd0368a73bf --- /dev/null +++ b/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/partial_expression.php.inc @@ -0,0 +1,31 @@ + +----- + 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 deleted file mode 100644 index a13348d94ad..00000000000 --- a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_class_imported_as_alias.php.inc +++ /dev/null @@ -1,11 +0,0 @@ - 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 deleted file mode 100644 index 8dffc00fd25..00000000000 --- a/rules-tests/Renaming/Rector/Name/RenameClassRector/FixtureAutoImportNames/skip_partial_expression.php.inc +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php index aa60f75fdca..69dae6f76a0 100644 --- a/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php +++ b/rules/CodingStyle/ClassNameImport/ClassNameImportSkipper.php @@ -69,10 +69,6 @@ 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); } @@ -103,19 +99,6 @@ 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 new file mode 100644 index 00000000000..96ca045cb02 --- /dev/null +++ b/tests/Issues/AutoImport/Fixture/do_not_rename_different_namespaced_function.php.inc @@ -0,0 +1,23 @@ + +----- + +----- + diff --git a/tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc b/tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc new file mode 100644 index 00000000000..3bbd9928c55 --- /dev/null +++ b/tests/Issues/AutoImport/Fixture/inner_with_subnamespace2.php.inc @@ -0,0 +1,29 @@ + +----- + 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 deleted file mode 100644 index 48c7dbd32c9..00000000000 --- a/tests/Issues/AutoImport/Fixture/skip_do_not_rename_different_namespaced_function.php.inc +++ /dev/null @@ -1,11 +0,0 @@ - diff --git a/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc b/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc deleted file mode 100644 index 490ede9ca06..00000000000 --- a/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace.php.inc +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc b/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc deleted file mode 100644 index 122aac7a1d0..00000000000 --- a/tests/Issues/AutoImport/Fixture/skip_inner_with_subnamespace2.php.inc +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc b/tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc deleted file mode 100644 index 37c9d567f04..00000000000 --- a/tests/Issues/AutoImportAliasedNamespace/Fixture/fully_qualified_still_imported.php.inc +++ /dev/null @@ -1,47 +0,0 @@ - ------ - diff --git a/tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc b/tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc deleted file mode 100644 index 02e26bc7293..00000000000 --- a/tests/Issues/AutoImportAliasedNamespace/Fixture/skip_aliased_attribute.php.inc +++ /dev/null @@ -1,14 +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 new file mode 100644 index 00000000000..e21b79a1171 --- /dev/null +++ b/tests/Issues/NamespacedUseAutoImport/Fixture/namespaced_use_single_namespace.php.inc @@ -0,0 +1,31 @@ + +----- + diff --git a/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc b/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc deleted file mode 100644 index 7469ca4ef37..00000000000 --- a/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_class.php.inc +++ /dev/null @@ -1,11 +0,0 @@ - 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 deleted file mode 100644 index 05645e155b3..00000000000 --- a/tests/Issues/NamespacedUseAutoImport/Fixture/skip_namespaced_use_single_namespace.php.inc +++ /dev/null @@ -1,15 +0,0 @@ -