From afb2e45b6a8ca9b99a50e64b3c766c6c9ba09382 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 23 Sep 2026 14:06:23 +0200 Subject: [PATCH] [Renaming] Throw on same old and new class in RenameClassRector configuration --- .../Rector/Name/RenameClassRector.php | 10 ++++++++ .../SameOldToNewClassTest.php | 23 +++++++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 tests/Renaming/Rector/Name/RenameClassRector/SameOldToNewClassTest.php diff --git a/rules/Renaming/Rector/Name/RenameClassRector.php b/rules/Renaming/Rector/Name/RenameClassRector.php index e98cbd736ca..a09de4ae8c0 100644 --- a/rules/Renaming/Rector/Name/RenameClassRector.php +++ b/rules/Renaming/Rector/Name/RenameClassRector.php @@ -15,6 +15,7 @@ use PHPStan\Reflection\ReflectionProvider; use Rector\Configuration\RenamedClassesDataCollector; use Rector\Contract\Rector\ConfigurableRectorInterface; +use Rector\Exception\Configuration\InvalidConfigurationException; use Rector\NodeTypeResolver\Node\AttributeKey; use Rector\Rector\AbstractRector; use Rector\Renaming\NodeManipulator\ClassRenamer; @@ -119,6 +120,15 @@ public function configure(array $configuration): void Assert::allString($configuration); Assert::allString(array_keys($configuration)); + foreach ($configuration as $oldClass => $newClass) { + if ($oldClass === $newClass) { + throw new InvalidConfigurationException(sprintf( + 'Rename "%s" class to a different one, as the old and new class name are the same', + $oldClass + )); + } + } + $this->renamedClassesDataCollector->addOldToNewClasses($configuration); } diff --git a/tests/Renaming/Rector/Name/RenameClassRector/SameOldToNewClassTest.php b/tests/Renaming/Rector/Name/RenameClassRector/SameOldToNewClassTest.php new file mode 100644 index 00000000000..0a595021233 --- /dev/null +++ b/tests/Renaming/Rector/Name/RenameClassRector/SameOldToNewClassTest.php @@ -0,0 +1,23 @@ +make(RenameClassRector::class); + + $this->expectException(InvalidConfigurationException::class); + + $renameClassRector->configure([ + 'App\SomeClass' => 'App\SomeClass', + ]); + } +}