Skip to content

Commit bb8cdb5

Browse files
authored
[Renaming] Throw on same old and new class in RenameClassRector configuration (#8515)
1 parent 1d0224b commit bb8cdb5

2 files changed

Lines changed: 33 additions & 0 deletions

File tree

‎rules/Renaming/Rector/Name/RenameClassRector.php‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use PHPStan\Reflection\ReflectionProvider;
1616
use Rector\Configuration\RenamedClassesDataCollector;
1717
use Rector\Contract\Rector\ConfigurableRectorInterface;
18+
use Rector\Exception\Configuration\InvalidConfigurationException;
1819
use Rector\NodeTypeResolver\Node\AttributeKey;
1920
use Rector\Rector\AbstractRector;
2021
use Rector\Renaming\NodeManipulator\ClassRenamer;
@@ -119,6 +120,15 @@ public function configure(array $configuration): void
119120
Assert::allString($configuration);
120121
Assert::allString(array_keys($configuration));
121122

123+
foreach ($configuration as $oldClass => $newClass) {
124+
if ($oldClass === $newClass) {
125+
throw new InvalidConfigurationException(sprintf(
126+
'Rename "%s" class to a different one, as the old and new class name are the same',
127+
$oldClass
128+
));
129+
}
130+
}
131+
122132
$this->renamedClassesDataCollector->addOldToNewClasses($configuration);
123133
}
124134

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Tests\Renaming\Rector\Name\RenameClassRector;
6+
7+
use Rector\Exception\Configuration\InvalidConfigurationException;
8+
use Rector\Renaming\Rector\Name\RenameClassRector;
9+
use Rector\Testing\PHPUnit\AbstractLazyTestCase;
10+
11+
final class SameOldToNewClassTest extends AbstractLazyTestCase
12+
{
13+
public function test(): void
14+
{
15+
$renameClassRector = $this->make(RenameClassRector::class);
16+
17+
$this->expectException(InvalidConfigurationException::class);
18+
19+
$renameClassRector->configure([
20+
'App\SomeClass' => 'App\SomeClass',
21+
]);
22+
}
23+
}

0 commit comments

Comments
 (0)