From 53040d50a7e16b971fb408dab10d2659231acd86 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 28 Aug 2025 12:53:48 +0700 Subject: [PATCH 1/2] [Naming] Skip rename extends from /vendor/ on RenameParamToMatchTypeRector --- .../skip_override_vendor_param.php.inc | 13 ++++++ .../Source/vendor/SomeVendorWithParam.php | 14 +++++++ .../RenameParamToMatchTypeRector.php | 42 ++++++++++++++++++- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/skip_override_vendor_param.php.inc create mode 100644 rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Source/vendor/SomeVendorWithParam.php diff --git a/rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/skip_override_vendor_param.php.inc b/rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/skip_override_vendor_param.php.inc new file mode 100644 index 00000000000..d229000e2f9 --- /dev/null +++ b/rules-tests/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector/Fixture/skip_override_vendor_param.php.inc @@ -0,0 +1,13 @@ +shouldSkipClassMethodFromVendor($node)) { + return null; + } + $expectedName = $this->expectedNameResolver->resolveForParamIfNotYet($param); if ($expectedName === null) { continue; @@ -115,6 +123,38 @@ public function refactor(Node $node): ?Node return $node; } + private function shouldSkipClassMethodFromVendor(ClassMethod $classMethod): bool + { + if ($classMethod->isPrivate()) { + return false; + } + + $classReflection = $this->reflectionResolver->resolveClassReflection($classMethod); + if (! $classReflection instanceof ClassReflection) { + return false; + } + + $ancestors = array_filter( + $classReflection->getAncestors(), + fn (ClassReflection $ancestorClassReflection): bool => + $classReflection->getName() !== $ancestorClassReflection->getName() + ); + + foreach ($ancestors as $ancestor) { + // internal + if ($ancestor->getFileName() === null) { + continue; + } + + $path = PathNormalizer::normalize($ancestor->getFileName()); + if (str_contains($path, '/vendor/')) { + return true; + } + } + + return false; + } + private function shouldSkipParam( Param $param, string $expectedName, From 90b36ebeb76af6ac12622acb3f8bbcf1ec671df1 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 28 Aug 2025 12:55:13 +0700 Subject: [PATCH 2/2] [Naming] Skip rename extends from /vendor/ on RenameParamToMatchTypeRector --- .../Rector/ClassMethod/RenameParamToMatchTypeRector.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rules/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector.php b/rules/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector.php index b90d21d4100..8b182c6ab10 100644 --- a/rules/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector.php +++ b/rules/Naming/Rector/ClassMethod/RenameParamToMatchTypeRector.php @@ -140,12 +140,17 @@ private function shouldSkipClassMethodFromVendor(ClassMethod $classMethod): bool $classReflection->getName() !== $ancestorClassReflection->getName() ); + $methodName = $this->getName($classMethod); foreach ($ancestors as $ancestor) { // internal if ($ancestor->getFileName() === null) { continue; } + if (! $ancestor->hasNativeMethod($methodName)) { + continue; + } + $path = PathNormalizer::normalize($ancestor->getFileName()); if (str_contains($path, '/vendor/')) { return true;