From 9aa9383c20cb36e5d118c21c184e81b96a667efd Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Thu, 8 Oct 2026 21:00:11 +0200 Subject: [PATCH] [Naming] Deprecate RenamePropertyToMatchTypeRector --- config/set/naming.php | 2 - .../Fixture/git_wrapper.php.inc | 41 ----- .../Fixture/keep_alias_prefix.php.inc | 18 -- .../Fixture/keep_correct.php.inc | 34 ---- .../Fixture/keep_date_time.php.inc | 14 -- .../Fixture/keep_date_time_interface.php.inc | 11 -- .../Fixture/keep_iterable.php.inc | 18 -- .../keep_promoted_property_prefix.php.inc | 18 -- .../Fixture/keep_property_type_prefix.php.inc | 18 -- .../Fixture/keep_self.php.inc | 27 --- .../Fixture/keep_underscore_property.php.inc | 8 - .../Fixture/keep_various_types.php.inc | 48 ------ ..._used_aliased_on_promoted_property.php.inc | 31 ---- .../Fixture/nullable_expr_type.php.inc | 59 ------- .../Fixture/nullable_object_type_doc.php.inc | 41 ----- .../promoted_property_rename_fetch.php.inc | 43 ----- .../property_type_over_docblock.php.inc | 33 ---- .../property_type_with_only_comment.php.inc | 33 ---- .../Fixture/rename_param.php.inc | 41 ----- .../Fixture/rename_param_doc.php.inc | 47 ----- ...rename_property_and_property_fetch.php.inc | 41 ----- .../skip_another_doctrine_collection.php.inc | 26 --- .../skip_change_duplicate_type.php.inc | 24 --- .../skip_change_duplicate_type_prefix.php.inc | 32 ---- .../skip_change_duplicate_type_suffix.php.inc | 24 --- ...kip_change_promoted_duplicate_type.php.inc | 14 -- .../Fixture/skip_created_at_property.php.inc | 13 -- .../Fixture/skip_date_time.php.inc | 15 -- .../Fixture/skip_date_time_again.php.inc | 13 -- .../Fixture/skip_datetime_immutable.php.inc | 10 -- .../Fixture/skip_doctrine_collection.php.inc | 24 --- ...ctrine_collection_private_property.php.inc | 24 --- .../Fixture/skip_interface_reflection.php.inc | 12 -- .../skip_laravel_collection_of_type.php.inc | 20 --- .../Fixture/skip_letter_upper.php.inc | 15 -- .../Fixture/skip_mock_property.php.inc | 17 -- .../Fixture/skip_numeric_string.php.inc | 11 -- .../skip_phpstan_type_construct.php.inc | 18 -- ...tected_property_on_non_final_class.php.inc | 18 -- .../skip_protected_property_promotion.php.inc | 12 -- .../skip_public_constructor_property.php.inc | 13 -- .../Fixture/skip_repository_generic.php.inc | 21 --- .../Fixture/skip_union_type.php.inc | 14 -- .../Fixture/skip_used_by_trait.php.inc | 21 --- ...sed_by_trait_as_property_promotion.php.inc | 15 -- .../Fixture/skip_uuid.php.inc | 23 --- .../Fixture/skip_with_alias_subname.php.inc | 18 -- .../skip_with_shortname_subnamespace.php.inc | 18 -- .../Fixture/union_types_to_expr.php.inc | 59 ------- .../use_aliased_on_promoted_property.php.inc | 29 ---- ...lable_aliased_on_promoted_property.php.inc | 29 ---- .../RenamePropertyToMatchTypeRectorTest.php | 28 --- .../Source/AMP.php | 11 -- .../Source/AbstractWhatever.php | 10 -- .../Source/BIGLetterFirst.php | 11 -- .../Source/Doctrine/ObjectRepository.php | 12 -- .../Source/EliteManager.php | 10 -- .../Source/Entity/SomeAnswerEntity.php | 10 -- .../Source/Entity/SomeEntity.php | 9 - .../Source/GitWrapper.php | 11 -- .../Source/ILoader.php | 10 -- .../Source/IPresenter.php | 10 -- .../Source/SingleSomeClass.php | 10 -- .../Source/Twig_Template.php | 11 -- .../Source/UseEliteManagerTrait.php | 13 -- .../config/configured_rule.php | 13 -- .../MatchPropertyTypeExpectedNameResolver.php | 83 --------- .../Guard/BreakingVariableRenameGuard.php | 2 +- .../Guard/DateTimeAtNamingConventionGuard.php | 41 ----- rules/Naming/Guard/HasMagicGetSetGuard.php | 30 ---- .../MatchPropertyTypeConflictingNameGuard.php | 43 ----- .../MatchTypePropertyRenamer.php | 51 ------ .../PropertyRenamer/PropertyFetchRenamer.php | 43 ----- .../PropertyPromotionRenamer.php | 161 +----------------- .../RenamePropertyToMatchTypeRector.php | 100 +---------- .../RenameGuard/PropertyRenameGuard.php | 41 ----- rules/Naming/ValueObject/PropertyRename.php | 66 ------- .../PropertyRenameFactory.php | 42 ----- .../Fixture/fixture.php.inc | 40 ----- .../IssueConstructorPromotionRenameTest.php | 28 --- .../Source/PromotedPropertyObject.php | 10 -- .../config/configured_rule.php | 10 -- .../CreatePublicPropertyOnRenameTest.php | 28 --- .../Fixture/fixture.php.inc | 41 ----- .../Source/SomePropertyObject.php | 10 -- .../config/configured_rule.php | 10 -- 86 files changed, 10 insertions(+), 2277 deletions(-) delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/git_wrapper.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_alias_prefix.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_correct.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_date_time.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_date_time_interface.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_iterable.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_promoted_property_prefix.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_property_type_prefix.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_self.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_underscore_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_various_types.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/never_used_aliased_on_promoted_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_expr_type.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_object_type_doc.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/promoted_property_rename_fetch.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_over_docblock.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_with_only_comment.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param_doc.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_property_and_property_fetch.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_another_doctrine_collection.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_prefix.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_suffix.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_promoted_duplicate_type.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_created_at_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_date_time.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_date_time_again.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_datetime_immutable.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_doctrine_collection.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_doctrine_collection_private_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_interface_reflection.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_laravel_collection_of_type.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_letter_upper.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_mock_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_numeric_string.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_phpstan_type_construct.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_on_non_final_class.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_promotion.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_public_constructor_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_repository_generic.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_union_type.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_used_by_trait.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_used_by_trait_as_property_promotion.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_uuid.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_alias_subname.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_shortname_subnamespace.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/union_types_to_expr.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_aliased_on_promoted_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_nullable_aliased_on_promoted_property.php.inc delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/RenamePropertyToMatchTypeRectorTest.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/AMP.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/AbstractWhatever.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/BIGLetterFirst.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/Doctrine/ObjectRepository.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/EliteManager.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/Entity/SomeAnswerEntity.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/Entity/SomeEntity.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/GitWrapper.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/ILoader.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/IPresenter.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/SingleSomeClass.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/Twig_Template.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/UseEliteManagerTrait.php delete mode 100644 rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/config/configured_rule.php delete mode 100644 rules/Naming/ExpectedNameResolver/MatchPropertyTypeExpectedNameResolver.php delete mode 100644 rules/Naming/Guard/DateTimeAtNamingConventionGuard.php delete mode 100644 rules/Naming/Guard/HasMagicGetSetGuard.php delete mode 100644 rules/Naming/Guard/PropertyConflictingNameGuard/MatchPropertyTypeConflictingNameGuard.php delete mode 100644 rules/Naming/PropertyRenamer/MatchTypePropertyRenamer.php delete mode 100644 rules/Naming/PropertyRenamer/PropertyFetchRenamer.php delete mode 100644 rules/Naming/RenameGuard/PropertyRenameGuard.php delete mode 100644 rules/Naming/ValueObject/PropertyRename.php delete mode 100644 rules/Naming/ValueObjectFactory/PropertyRenameFactory.php delete mode 100644 tests/Issues/IssueConstructorPromotionRename/Fixture/fixture.php.inc delete mode 100644 tests/Issues/IssueConstructorPromotionRename/IssueConstructorPromotionRenameTest.php delete mode 100644 tests/Issues/IssueConstructorPromotionRename/Source/PromotedPropertyObject.php delete mode 100644 tests/Issues/IssueConstructorPromotionRename/config/configured_rule.php delete mode 100644 tests/Issues/IssueCreatePublicPropertyOnRename/CreatePublicPropertyOnRenameTest.php delete mode 100644 tests/Issues/IssueCreatePublicPropertyOnRename/Fixture/fixture.php.inc delete mode 100644 tests/Issues/IssueCreatePublicPropertyOnRename/Source/SomePropertyObject.php delete mode 100644 tests/Issues/IssueCreatePublicPropertyOnRename/config/configured_rule.php diff --git a/config/set/naming.php b/config/set/naming.php index 5c2a1f6b38d..cd2c8020932 100644 --- a/config/set/naming.php +++ b/config/set/naming.php @@ -4,7 +4,6 @@ use Rector\Config\RectorConfig; use Rector\Naming\Rector\Assign\RenameVariableToMatchMethodCallReturnTypeRector; -use Rector\Naming\Rector\Class_\RenamePropertyToMatchTypeRector; use Rector\Naming\Rector\ClassMethod\RenameParamToMatchTypeRector; use Rector\Naming\Rector\ClassMethod\RenameVariableToMatchNewTypeRector; use Rector\Naming\Rector\Foreach_\RenameForeachValueVariableToMatchExprVariableRector; @@ -13,7 +12,6 @@ return static function (RectorConfig $rectorConfig): void { $rectorConfig->rules([ RenameParamToMatchTypeRector::class, - RenamePropertyToMatchTypeRector::class, RenameVariableToMatchNewTypeRector::class, RenameVariableToMatchMethodCallReturnTypeRector::class, RenameForeachValueVariableToMatchMethodCallReturnTypeRector::class, diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/git_wrapper.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/git_wrapper.php.inc deleted file mode 100644 index 22fed4e7706..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/git_wrapper.php.inc +++ /dev/null @@ -1,41 +0,0 @@ -wrapper = $wrapper; - } -} - -?> ------ -gitWrapper = $wrapper; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_alias_prefix.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_alias_prefix.php.inc deleted file mode 100644 index a17da73046c..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_alias_prefix.php.inc +++ /dev/null @@ -1,18 +0,0 @@ -nikicParserFactory = $nikicParserFactory; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_correct.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_correct.php.inc deleted file mode 100644 index 033156e4c3b..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_correct.php.inc +++ /dev/null @@ -1,34 +0,0 @@ -timestamp = $timestamp; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_date_time_interface.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_date_time_interface.php.inc deleted file mode 100644 index 9db9203b513..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_date_time_interface.php.inc +++ /dev/null @@ -1,11 +0,0 @@ -applicationServiceMapProvider; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_property_type_prefix.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_property_type_prefix.php.inc deleted file mode 100644 index 7ac66e59546..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_property_type_prefix.php.inc +++ /dev/null @@ -1,18 +0,0 @@ -getStatusCodeMethodCall; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_self.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_self.php.inc deleted file mode 100644 index 566a27d57e7..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/keep_self.php.inc +++ /dev/null @@ -1,27 +0,0 @@ - ------ - diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_expr_type.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_expr_type.php.inc deleted file mode 100644 index 8852382cce8..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_expr_type.php.inc +++ /dev/null @@ -1,59 +0,0 @@ -call; - } -} - -?> ------ -expr; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_object_type_doc.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_object_type_doc.php.inc deleted file mode 100644 index 65f09331d5c..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/nullable_object_type_doc.php.inc +++ /dev/null @@ -1,41 +0,0 @@ -wrapper = $wrapper; - } -} - -?> ------ -gitWrapper = $wrapper; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/promoted_property_rename_fetch.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/promoted_property_rename_fetch.php.inc deleted file mode 100644 index 4d6b146051c..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/promoted_property_rename_fetch.php.inc +++ /dev/null @@ -1,43 +0,0 @@ -eventManager; - } -} - -?> ------ -eliteManager; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_over_docblock.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_over_docblock.php.inc deleted file mode 100644 index 247387367a0..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_over_docblock.php.inc +++ /dev/null @@ -1,33 +0,0 @@ - ------ - diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_with_only_comment.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_with_only_comment.php.inc deleted file mode 100644 index af690e1a066..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/property_type_with_only_comment.php.inc +++ /dev/null @@ -1,33 +0,0 @@ - ------ - diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param.php.inc deleted file mode 100644 index 05f9625a553..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param.php.inc +++ /dev/null @@ -1,41 +0,0 @@ -eventManager = $eventManager; - } -} - -?> ------ -eliteManager = $eventManager; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param_doc.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param_doc.php.inc deleted file mode 100644 index d6e51e8ce93..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_param_doc.php.inc +++ /dev/null @@ -1,47 +0,0 @@ -analyzer; - } -} - -?> ------ -classAnalyzer; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_property_and_property_fetch.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_property_and_property_fetch.php.inc deleted file mode 100644 index b2a0a471d48..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/rename_property_and_property_fetch.php.inc +++ /dev/null @@ -1,41 +0,0 @@ -eventManager = $eventManager; - } -} - -?> ------ -eliteManager = $eventManager; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_another_doctrine_collection.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_another_doctrine_collection.php.inc deleted file mode 100644 index 294cc5ae251..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_another_doctrine_collection.php.inc +++ /dev/null @@ -1,26 +0,0 @@ - - */ - #[OneToMany(mappedBy: 'user', targetEntity: SomeAnswerEntity::class)] - private Collection $someAnswers; - - public function __construct( - ) { - $this->someAnswers = new ArrayCollection(); - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type.php.inc deleted file mode 100644 index b35334efc84..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type.php.inc +++ /dev/null @@ -1,24 +0,0 @@ -eventManager1 = $eventManager1; - $this->eventManager2 = $eventManager2; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_prefix.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_prefix.php.inc deleted file mode 100644 index e935096de9a..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_prefix.php.inc +++ /dev/null @@ -1,32 +0,0 @@ -nameNode; - } - - public function getParentNode(): Node - { - return $this->parentNode; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_suffix.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_suffix.php.inc deleted file mode 100644 index ca1f4702f50..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_duplicate_type_suffix.php.inc +++ /dev/null @@ -1,24 +0,0 @@ -eventManager1 = $eventManager1; - $this->eventManager2 = $eventManager2; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_promoted_duplicate_type.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_promoted_duplicate_type.php.inc deleted file mode 100644 index 98e5d4a507b..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_change_promoted_duplicate_type.php.inc +++ /dev/null @@ -1,14 +0,0 @@ -updatedAt; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_date_time_again.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_date_time_again.php.inc deleted file mode 100644 index 695c33f07af..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_date_time_again.php.inc +++ /dev/null @@ -1,13 +0,0 @@ -today = $today; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_datetime_immutable.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_datetime_immutable.php.inc deleted file mode 100644 index b2ce9286082..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_datetime_immutable.php.inc +++ /dev/null @@ -1,10 +0,0 @@ - - */ - public Collection $checkboxes; - - public function __construct() - { - $this->checkboxes = new ArrayCollection(); - } - - public function getCheckboxes(): Collection - { - return $this->checkboxes; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_doctrine_collection_private_property.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_doctrine_collection_private_property.php.inc deleted file mode 100644 index cd33853a8b7..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_doctrine_collection_private_property.php.inc +++ /dev/null @@ -1,24 +0,0 @@ - - */ - private Collection $checkboxes; - - public function __construct() - { - $this->checkboxes = new ArrayCollection(); - } - - public function getCheckboxes(): Collection - { - return $this->checkboxes; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_interface_reflection.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_interface_reflection.php.inc deleted file mode 100644 index f4bcb743de0..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_interface_reflection.php.inc +++ /dev/null @@ -1,12 +0,0 @@ - diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_laravel_collection_of_type.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_laravel_collection_of_type.php.inc deleted file mode 100644 index 2fd41cb8f4f..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_laravel_collection_of_type.php.inc +++ /dev/null @@ -1,20 +0,0 @@ -items = $items; - } - - public function getItems(): Collection - { - return $this->items; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_letter_upper.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_letter_upper.php.inc deleted file mode 100644 index c3a5d075899..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_letter_upper.php.inc +++ /dev/null @@ -1,15 +0,0 @@ -random = $random; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_mock_property.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_mock_property.php.inc deleted file mode 100644 index 80952b5a94e..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_mock_property.php.inc +++ /dev/null @@ -1,17 +0,0 @@ -eliteManagerMock = $this->createMock(EliteManager::class); - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_numeric_string.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_numeric_string.php.inc deleted file mode 100644 index 81cfd765938..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_numeric_string.php.inc +++ /dev/null @@ -1,11 +0,0 @@ -returnType; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_on_non_final_class.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_on_non_final_class.php.inc deleted file mode 100644 index fec83aaa368..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_on_non_final_class.php.inc +++ /dev/null @@ -1,18 +0,0 @@ -wrapper = $wrapper; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_promotion.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_promotion.php.inc deleted file mode 100644 index 686fbc31782..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_protected_property_promotion.php.inc +++ /dev/null @@ -1,12 +0,0 @@ - - */ - private $timestampableRepository; - - protected function setUp(): void - { - parent::setUp(); - - $this->timestampableRepository = $this->entityManager->getRepository(SomeEntity::class); - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_union_type.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_union_type.php.inc deleted file mode 100644 index 2c95dd4dc19..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_union_type.php.inc +++ /dev/null @@ -1,14 +0,0 @@ -eventManager = $eventManager; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_used_by_trait_as_property_promotion.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_used_by_trait_as_property_promotion.php.inc deleted file mode 100644 index 47ec5937d76..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_used_by_trait_as_property_promotion.php.inc +++ /dev/null @@ -1,15 +0,0 @@ -id; - } - - public function setId(Uuid $id) - { - $this->id = $id; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_alias_subname.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_alias_subname.php.inc deleted file mode 100644 index 51081fee043..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_alias_subname.php.inc +++ /dev/null @@ -1,18 +0,0 @@ -someStmt = $stmt; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_shortname_subnamespace.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_shortname_subnamespace.php.inc deleted file mode 100644 index 5b612fc0b9e..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/skip_with_shortname_subnamespace.php.inc +++ /dev/null @@ -1,18 +0,0 @@ -someStmt = $stmt; - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/union_types_to_expr.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/union_types_to_expr.php.inc deleted file mode 100644 index 32ac83f1ceb..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/union_types_to_expr.php.inc +++ /dev/null @@ -1,59 +0,0 @@ -call; - } -} - -?> ------ -expr; - } -} - -?> diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_aliased_on_promoted_property.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_aliased_on_promoted_property.php.inc deleted file mode 100644 index 10d7accd931..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_aliased_on_promoted_property.php.inc +++ /dev/null @@ -1,29 +0,0 @@ - ------ - diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_nullable_aliased_on_promoted_property.php.inc b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_nullable_aliased_on_promoted_property.php.inc deleted file mode 100644 index f8c397eddce..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Fixture/use_nullable_aliased_on_promoted_property.php.inc +++ /dev/null @@ -1,29 +0,0 @@ - ------ - diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/RenamePropertyToMatchTypeRectorTest.php b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/RenamePropertyToMatchTypeRectorTest.php deleted file mode 100644 index 23c5c3638d4..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/RenamePropertyToMatchTypeRectorTest.php +++ /dev/null @@ -1,28 +0,0 @@ -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/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/AMP.php b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/AMP.php deleted file mode 100644 index 19efc5b650c..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/Source/AMP.php +++ /dev/null @@ -1,11 +0,0 @@ -eventManager->trigger($name); - } -} diff --git a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/config/configured_rule.php b/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/config/configured_rule.php deleted file mode 100644 index d39c9d8981d..00000000000 --- a/rules-tests/Naming/Rector/Class_/RenamePropertyToMatchTypeRector/config/configured_rule.php +++ /dev/null @@ -1,13 +0,0 @@ -rule(RenamePropertyToMatchTypeRector::class); - - $rectorConfig->phpVersion(PhpVersion::PHP_81); -}; diff --git a/rules/Naming/ExpectedNameResolver/MatchPropertyTypeExpectedNameResolver.php b/rules/Naming/ExpectedNameResolver/MatchPropertyTypeExpectedNameResolver.php deleted file mode 100644 index 61f6bc43d7b..00000000000 --- a/rules/Naming/ExpectedNameResolver/MatchPropertyTypeExpectedNameResolver.php +++ /dev/null @@ -1,83 +0,0 @@ -reflectionResolver->resolveClassReflection($property); - if (! $classReflection instanceof ClassReflection) { - return null; - } - - $propertyName = $this->nodeNameResolver->getName($property); - if ($this->propertyManipulator->isUsedByTrait($classReflection, $propertyName)) { - return null; - } - - $expectedName = $this->resolveExpectedName($property); - if (! $expectedName instanceof ExpectedName) { - return null; - } - - // skip if already has suffix - if (str_ends_with($propertyName, $expectedName->getName()) || str_ends_with( - $propertyName, - ucfirst($expectedName->getName()) - )) { - return null; - } - - return $expectedName->getName(); - } - - private function resolveExpectedName(Property $property): ?ExpectedName - { - // property type first - if ($property->type instanceof Node) { - $propertyType = $this->staticTypeMapper->mapPhpParserNodePHPStanType($property->type); - return $this->propertyNaming->getExpectedNameFromType($propertyType); - } - - // fallback to docblock - $phpDocInfo = $this->phpDocInfoFactory->createFromNode($property); - $hasVarTag = $phpDocInfo instanceof PhpDocInfo && $phpDocInfo->getVarTagValueNode() instanceof VarTagValueNode; - if ($hasVarTag) { - return $this->propertyNaming->getExpectedNameFromType($phpDocInfo->getVarType()); - } - - return null; - } -} diff --git a/rules/Naming/Guard/BreakingVariableRenameGuard.php b/rules/Naming/Guard/BreakingVariableRenameGuard.php index 4ce1287046a..9bd9a8a11ca 100644 --- a/rules/Naming/Guard/BreakingVariableRenameGuard.php +++ b/rules/Naming/Guard/BreakingVariableRenameGuard.php @@ -33,7 +33,7 @@ /** * @see https://regex101.com/r/1pKLgf/1 */ - public const string AT_NAMING_REGEX = '#[\w+]At$#'; + private const string AT_NAMING_REGEX = '#[\w+]At$#'; public function __construct( private BetterNodeFinder $betterNodeFinder, diff --git a/rules/Naming/Guard/DateTimeAtNamingConventionGuard.php b/rules/Naming/Guard/DateTimeAtNamingConventionGuard.php deleted file mode 100644 index 985c8901b6d..00000000000 --- a/rules/Naming/Guard/DateTimeAtNamingConventionGuard.php +++ /dev/null @@ -1,41 +0,0 @@ -nodeTypeResolver->getType($propertyRename->getProperty()); - $type = $this->typeUnwrapper->unwrapFirstObjectTypeFromUnionType($type); - - $className = ClassNameFromObjectTypeResolver::resolve($type); - if ($className === null) { - return false; - } - - if (! is_a($className, DateTimeInterface::class, true)) { - return false; - } - - return StringUtils::isMatch( - $propertyRename->getCurrentName(), - BreakingVariableRenameGuard::AT_NAMING_REGEX - ); - } -} diff --git a/rules/Naming/Guard/HasMagicGetSetGuard.php b/rules/Naming/Guard/HasMagicGetSetGuard.php deleted file mode 100644 index 0c58a3f7cf6..00000000000 --- a/rules/Naming/Guard/HasMagicGetSetGuard.php +++ /dev/null @@ -1,30 +0,0 @@ -reflectionProvider->hasClass($propertyRename->getClassLikeName())) { - return false; - } - - $classReflection = $this->reflectionProvider->getClass($propertyRename->getClassLikeName()); - if ($classReflection->hasMethod('__set')) { - return true; - } - - return $classReflection->hasMethod('__get'); - } -} diff --git a/rules/Naming/Guard/PropertyConflictingNameGuard/MatchPropertyTypeConflictingNameGuard.php b/rules/Naming/Guard/PropertyConflictingNameGuard/MatchPropertyTypeConflictingNameGuard.php deleted file mode 100644 index ac27f76b650..00000000000 --- a/rules/Naming/Guard/PropertyConflictingNameGuard/MatchPropertyTypeConflictingNameGuard.php +++ /dev/null @@ -1,43 +0,0 @@ -resolve($propertyRename->getClassLike()); - return in_array($propertyRename->getExpectedName(), $conflictingPropertyNames, true); - } - - /** - * @return string[] - */ - private function resolve(ClassLike $classLike): array - { - $expectedNames = []; - foreach ($classLike->getProperties() as $property) { - $expectedName = $this->matchPropertyTypeExpectedNameResolver->resolve($property, $classLike); - $expectedName ??= $this->nodeNameResolver->getName($property); - - $expectedNames[] = $expectedName; - } - - return $this->arrayFilter->filterWithAtLeastTwoOccurrences($expectedNames); - } -} diff --git a/rules/Naming/PropertyRenamer/MatchTypePropertyRenamer.php b/rules/Naming/PropertyRenamer/MatchTypePropertyRenamer.php deleted file mode 100644 index 259c7964a1b..00000000000 --- a/rules/Naming/PropertyRenamer/MatchTypePropertyRenamer.php +++ /dev/null @@ -1,51 +0,0 @@ -matchPropertyTypeConflictingNameGuard->isConflicting($propertyRename)) { - return null; - } - - if ($propertyRename->isAlreadyExpectedName()) { - return null; - } - - if ($this->propertyRenameGuard->shouldSkip($propertyRename)) { - return null; - } - - $propertyItem = $propertyRename->getPropertyProperty(); - $propertyItem->name = new VarLikeIdentifier($propertyRename->getExpectedName()); - $this->renamePropertyFetchesInClass($propertyRename); - - return $propertyRename->getProperty(); - } - - private function renamePropertyFetchesInClass(PropertyRename $propertyRename): void - { - $this->propertyFetchRenamer->renamePropertyFetchesInClass( - $propertyRename->getClassLike(), - $propertyRename->getCurrentName(), - $propertyRename->getExpectedName() - ); - } -} diff --git a/rules/Naming/PropertyRenamer/PropertyFetchRenamer.php b/rules/Naming/PropertyRenamer/PropertyFetchRenamer.php deleted file mode 100644 index f7cd465e0e8..00000000000 --- a/rules/Naming/PropertyRenamer/PropertyFetchRenamer.php +++ /dev/null @@ -1,43 +0,0 @@ -simpleCallableNodeTraverser->traverseNodesWithCallable( - $classLike, - function (Node $node) use ($currentName, $expectedName): ?Node { - if (! $this->propertyFetchAnalyzer->isLocalPropertyFetchName($node, $currentName)) { - return null; - } - - /** @var StaticPropertyFetch|PropertyFetch $node */ - $node->name = $node instanceof PropertyFetch - ? new Identifier($expectedName) - : new VarLikeIdentifier($expectedName); - - return $node; - } - ); - } -} diff --git a/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php b/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php index b5d8cb5f4e0..76b13b4678b 100644 --- a/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php +++ b/rules/Naming/PropertyRenamer/PropertyPromotionRenamer.php @@ -4,107 +4,24 @@ namespace Rector\Naming\PropertyRenamer; -use PhpParser\Node\Expr\Error; -use PhpParser\Node\Expr\Variable; use PhpParser\Node\Param; -use PhpParser\Node\Stmt\Class_; -use PhpParser\Node\Stmt\ClassLike; use PhpParser\Node\Stmt\ClassMethod; use PHPStan\PhpDocParser\Ast\PhpDoc\ParamTagValueNode; -use PHPStan\Reflection\ClassReflection; use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfo; -use Rector\BetterPhpDocParser\PhpDocInfo\PhpDocInfoFactory; use Rector\Comments\NodeDocBlock\DocBlockUpdater; -use Rector\Naming\ExpectedNameResolver\MatchParamTypeExpectedNameResolver; use Rector\Naming\ParamRenamer\ParamRenamer; use Rector\Naming\ValueObject\ParamRename; use Rector\Naming\ValueObjectFactory\ParamRenameFactory; -use Rector\Naming\VariableRenamer; -use Rector\NodeManipulator\PropertyManipulator; -use Rector\NodeNameResolver\NodeNameResolver; -use Rector\Php\PhpVersionProvider; -use Rector\Reflection\ReflectionResolver; -use Rector\ValueObject\MethodName; -use Rector\ValueObject\PhpVersionFeature; final readonly class PropertyPromotionRenamer { public function __construct( - private PhpVersionProvider $phpVersionProvider, - private MatchParamTypeExpectedNameResolver $matchParamTypeExpectedNameResolver, private ParamRenameFactory $paramRenameFactory, - private PhpDocInfoFactory $phpDocInfoFactory, private ParamRenamer $paramRenamer, - private PropertyFetchRenamer $propertyFetchRenamer, - private NodeNameResolver $nodeNameResolver, - private VariableRenamer $variableRenamer, - private DocBlockUpdater $docBlockUpdater, - private ReflectionResolver $reflectionResolver, - private PropertyManipulator $propertyManipulator + private DocBlockUpdater $docBlockUpdater ) { } - public function renamePropertyPromotion(Class_ $class): bool - { - $hasChanged = false; - - if (! $this->phpVersionProvider->isAtLeastPhpVersion(PhpVersionFeature::PROPERTY_PROMOTION)) { - return false; - } - - $constructClassMethod = $class->getMethod(MethodName::CONSTRUCT); - if (! $constructClassMethod instanceof ClassMethod) { - return false; - } - - $classReflection = $this->reflectionResolver->resolveClassReflection($class); - if (! $classReflection instanceof ClassReflection) { - return false; - } - - // resolve possible and existing param names - $blockingParamNames = $this->resolveBlockingParamNames($constructClassMethod); - - foreach ($constructClassMethod->params as $param) { - if (! $param->isPromoted()) { - continue; - } - - // skip public properties, as they can be used in external code - if ($param->isPublic()) { - continue; - } - - if (! $class->isFinal() && $param->isProtected()) { - continue; - } - - // promoted property - $desiredPropertyName = $this->matchParamTypeExpectedNameResolver->resolve($param); - if ($desiredPropertyName === null) { - continue; - } - - if (in_array($desiredPropertyName, $blockingParamNames, true)) { - continue; - } - - $currentParamName = $this->nodeNameResolver->getName($param); - if ($this->isNameSuffixed($currentParamName, $desiredPropertyName)) { - continue; - } - - if ($this->propertyManipulator->isUsedByTrait($classReflection, $currentParamName)) { - continue; - } - - $this->renameParamVarNameAndVariableUsage($class, $constructClassMethod, $desiredPropertyName, $param); - $hasChanged = true; - } - - return $hasChanged; - } - public function renameParamDoc( PhpDocInfo $phpDocInfo, ClassMethod $classMethod, @@ -129,80 +46,4 @@ public function renameParamDoc( $this->paramRenamer->rename($paramRename); $this->docBlockUpdater->updateRefactoredNodeWithPhpDocInfo($classMethod); } - - private function renameParamVarNameAndVariableUsage( - ClassLike $classLike, - ClassMethod $classMethod, - string $desiredPropertyName, - Param $param - ): void { - if ($param->var instanceof Error) { - return; - } - - $classMethodPhpDocInfo = $this->phpDocInfoFactory->createFromNodeOrEmpty($classMethod); - - $currentParamName = $this->nodeNameResolver->getName($param); - - $this->propertyFetchRenamer->renamePropertyFetchesInClass( - $classLike, - $currentParamName, - $desiredPropertyName - ); - - /** @var string $paramVarName */ - $paramVarName = $param->var->name; - $this->renameParamDoc($classMethodPhpDocInfo, $classMethod, $param, $paramVarName, $desiredPropertyName); - $param->var = new Variable($desiredPropertyName); - - $this->variableRenamer->renameVariableInFunctionLike($classMethod, $paramVarName, $desiredPropertyName); - } - - /** - * Sometimes the bare type is not enough. - * This allows prefixing type in variable names, e.g. "Type $firstType" - */ - private function isNameSuffixed(string $currentParamName, string $desiredPropertyName): bool - { - $currentNameLowercased = strtolower($currentParamName); - $expectedNameLowercased = strtolower($desiredPropertyName); - - return str_ends_with($currentNameLowercased, $expectedNameLowercased); - } - - /** - * @return int[]|string[] - */ - private function resolveBlockingParamNames(ClassMethod $classMethod): array - { - $futureParamNames = []; - foreach ($classMethod->params as $param) { - $futureParamName = $this->matchParamTypeExpectedNameResolver->resolve($param); - if ($futureParamName === null) { - continue; - } - - $futureParamNames[] = $futureParamName; - } - - // remove null values - $futureParamNames = array_filter($futureParamNames); - if ($futureParamNames === []) { - return []; - } - - // resolve duplicated names - $blockingParamNames = []; - - $valuesToCount = array_count_values($futureParamNames); - foreach ($valuesToCount as $value => $count) { - if ($count < 2) { - continue; - } - - $blockingParamNames[] = $value; - } - - return $blockingParamNames; - } } diff --git a/rules/Naming/Rector/Class_/RenamePropertyToMatchTypeRector.php b/rules/Naming/Rector/Class_/RenamePropertyToMatchTypeRector.php index 3a7b0548c39..5e2901afc4b 100644 --- a/rules/Naming/Rector/Class_/RenamePropertyToMatchTypeRector.php +++ b/rules/Naming/Rector/Class_/RenamePropertyToMatchTypeRector.php @@ -5,35 +5,18 @@ namespace Rector\Naming\Rector\Class_; use PhpParser\Node; -use PhpParser\Node\Name; use PhpParser\Node\Stmt\Class_; -use PhpParser\Node\Stmt\Property; -use PHPStan\Type\ObjectType; -use Rector\Enum\ClassName; -use Rector\Naming\ExpectedNameResolver\MatchPropertyTypeExpectedNameResolver; -use Rector\Naming\PropertyRenamer\MatchTypePropertyRenamer; -use Rector\Naming\PropertyRenamer\PropertyPromotionRenamer; -use Rector\Naming\ValueObject\PropertyRename; -use Rector\Naming\ValueObjectFactory\PropertyRenameFactory; +use Rector\Configuration\Deprecation\Contract\DeprecatedInterface; +use Rector\Exception\ShouldNotHappenException; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; /** - * @see \Rector\Tests\Naming\Rector\Class_\RenamePropertyToMatchTypeRector\RenamePropertyToMatchTypeRectorTest + * @deprecated This rule is deprecated, as renaming properties to match their type is risky - it can conflict with existing names and remove custom naming that carries more context than the type alone. */ -final class RenamePropertyToMatchTypeRector extends AbstractRector +final class RenamePropertyToMatchTypeRector extends AbstractRector implements DeprecatedInterface { - private bool $hasChanged = false; - - public function __construct( - private readonly MatchTypePropertyRenamer $matchTypePropertyRenamer, - private readonly PropertyRenameFactory $propertyRenameFactory, - private readonly MatchPropertyTypeExpectedNameResolver $matchPropertyTypeExpectedNameResolver, - private readonly PropertyPromotionRenamer $propertyPromotionRenamer, - ) { - } - public function getRuleDefinition(): RuleDefinition { return new RuleDefinition( @@ -87,76 +70,9 @@ public function getNodeTypes(): array */ public function refactor(Node $node): ?Node { - $this->hasChanged = false; - - $this->refactorClassProperties($node); - - $hasPromotedPropertyChanged = $this->propertyPromotionRenamer->renamePropertyPromotion($node); - if ($this->hasChanged) { - return $node; - } - - if ($hasPromotedPropertyChanged) { - return $node; - } - - return null; - } - - private function refactorClassProperties(Class_ $class): void - { - foreach ($class->getProperties() as $property) { - // skip public properties, as they can be used in external code - if ($property->isPublic()) { - continue; - } - - if (! $class->isFinal() && $property->isProtected()) { - continue; - } - - $expectedPropertyName = $this->matchPropertyTypeExpectedNameResolver->resolve($property, $class); - if ($expectedPropertyName === null) { - continue; - } - - $propertyRename = $this->propertyRenameFactory->createFromExpectedName( - $class, - $property, - $expectedPropertyName - ); - - if (! $propertyRename instanceof PropertyRename) { - continue; - } - - if ($this->skipExactTypes($property)) { - continue; - } - - $renameProperty = $this->matchTypePropertyRenamer->rename($propertyRename); - if (! $renameProperty instanceof Property) { - continue; - } - - $this->hasChanged = true; - } - } - - /** - * Such properties can have "xMock" names that are not compatible with "MockObject" suffix - * They should be kept and handled by another naming rule that deals with mocks - */ - private function skipExactTypes(Property $property): bool - { - if (! $property->type instanceof Name) { - return false; - } - - if ($this->isObjectType($property->type, new ObjectType(ClassName::MOCK_OBJECT))) { - return true; - } - - return $this->isObjectType($property->type, new ObjectType(ClassName::DATE_TIME_INTERFACE)); + throw new ShouldNotHappenException(sprintf( + '"%s" rule is deprecated, as it is risky and can conflict with existing names or remove custom naming with more context', + self::class + )); } } diff --git a/rules/Naming/RenameGuard/PropertyRenameGuard.php b/rules/Naming/RenameGuard/PropertyRenameGuard.php deleted file mode 100644 index 4e88bbb2e62..00000000000 --- a/rules/Naming/RenameGuard/PropertyRenameGuard.php +++ /dev/null @@ -1,41 +0,0 @@ -isPrivateProperty()) { - return true; - } - - if ($this->nodeTypeResolver->isObjectType( - $propertyRename->getProperty(), - new ObjectType('Ramsey\Uuid\UuidInterface') - )) { - return true; - } - - if ($this->dateTimeAtNamingConventionGuard->isConflicting($propertyRename)) { - return true; - } - - return $this->hasMagicGetSetGuard->isConflicting($propertyRename); - } -} diff --git a/rules/Naming/ValueObject/PropertyRename.php b/rules/Naming/ValueObject/PropertyRename.php deleted file mode 100644 index 58b2ced96b2..00000000000 --- a/rules/Naming/ValueObject/PropertyRename.php +++ /dev/null @@ -1,66 +0,0 @@ -property; - } - - public function isPrivateProperty(): bool - { - return $this->property->isPrivate(); - } - - public function getExpectedName(): string - { - return $this->expectedName; - } - - public function getCurrentName(): string - { - return $this->currentName; - } - - public function isAlreadyExpectedName(): bool - { - return $this->currentName === $this->expectedName; - } - - public function getClassLike(): ClassLike - { - return $this->classLike; - } - - public function getClassLikeName(): string - { - return $this->classLikeName; - } - - public function getPropertyProperty(): PropertyItem - { - return $this->propertyItem; - } -} diff --git a/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php b/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php deleted file mode 100644 index 66a53606d0e..00000000000 --- a/rules/Naming/ValueObjectFactory/PropertyRenameFactory.php +++ /dev/null @@ -1,42 +0,0 @@ -nodeNameResolver->getName($property); - $className = (string) $this->nodeNameResolver->getName($class); - - try { - return new PropertyRename( - $property, - $expectedName, - $currentName, - $class, - $className, - $property->props[0] - ); - } catch (InvalidArgumentException) { - } - - return null; - } -} diff --git a/tests/Issues/IssueConstructorPromotionRename/Fixture/fixture.php.inc b/tests/Issues/IssueConstructorPromotionRename/Fixture/fixture.php.inc deleted file mode 100644 index ea1dd0ab5bd..00000000000 --- a/tests/Issues/IssueConstructorPromotionRename/Fixture/fixture.php.inc +++ /dev/null @@ -1,40 +0,0 @@ -a = $a; - dump($a); - dump($a->someCall('Y-m-d')); - } -} - -?> ------ -promotedPropertyObject); - dump($this->promotedPropertyObject->someCall('Y-m-d')); - } -} - -?> diff --git a/tests/Issues/IssueConstructorPromotionRename/IssueConstructorPromotionRenameTest.php b/tests/Issues/IssueConstructorPromotionRename/IssueConstructorPromotionRenameTest.php deleted file mode 100644 index 292daf14e3b..00000000000 --- a/tests/Issues/IssueConstructorPromotionRename/IssueConstructorPromotionRenameTest.php +++ /dev/null @@ -1,28 +0,0 @@ -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/IssueConstructorPromotionRename/Source/PromotedPropertyObject.php b/tests/Issues/IssueConstructorPromotionRename/Source/PromotedPropertyObject.php deleted file mode 100644 index ba7619b6264..00000000000 --- a/tests/Issues/IssueConstructorPromotionRename/Source/PromotedPropertyObject.php +++ /dev/null @@ -1,10 +0,0 @@ -withRules([ClassPropertyAssignToConstructorPromotionRector::class, RenamePropertyToMatchTypeRector::class]); diff --git a/tests/Issues/IssueCreatePublicPropertyOnRename/CreatePublicPropertyOnRenameTest.php b/tests/Issues/IssueCreatePublicPropertyOnRename/CreatePublicPropertyOnRenameTest.php deleted file mode 100644 index 39ef3b5b075..00000000000 --- a/tests/Issues/IssueCreatePublicPropertyOnRename/CreatePublicPropertyOnRenameTest.php +++ /dev/null @@ -1,28 +0,0 @@ -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/IssueCreatePublicPropertyOnRename/Fixture/fixture.php.inc b/tests/Issues/IssueCreatePublicPropertyOnRename/Fixture/fixture.php.inc deleted file mode 100644 index 1c0f3054483..00000000000 --- a/tests/Issues/IssueCreatePublicPropertyOnRename/Fixture/fixture.php.inc +++ /dev/null @@ -1,41 +0,0 @@ -date->format('l, F j, Y'); - } -} -?> ------ -somePropertyObject->format('l, F j, Y'); - } -} -?> diff --git a/tests/Issues/IssueCreatePublicPropertyOnRename/Source/SomePropertyObject.php b/tests/Issues/IssueCreatePublicPropertyOnRename/Source/SomePropertyObject.php deleted file mode 100644 index 2446836153c..00000000000 --- a/tests/Issues/IssueCreatePublicPropertyOnRename/Source/SomePropertyObject.php +++ /dev/null @@ -1,10 +0,0 @@ -withRules([RenamePropertyToMatchTypeRector::class, CompleteDynamicPropertiesRector::class]);