Skip to content

Commit 1ee57e1

Browse files
authored
[Renaming] Deprecate RenameStaticMethodRector as niche, never used and needs context (#8777)
1 parent 853b91e commit 1ee57e1

9 files changed

Lines changed: 11 additions & 252 deletions

File tree

‎bench/rename_static_method_bucket_bench.php‎

Lines changed: 0 additions & 99 deletions
This file was deleted.

‎phpstan.neon‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,6 @@ parameters:
237237
paths:
238238
- rules/Php81/Rector/FuncCall/NullToStrictStringFuncCallArgRector.php
239239
- rules/Removing/Rector/Class_/RemoveTraitUseRector.php
240-
- rules/Renaming/Rector/StaticCall/RenameStaticMethodRector.php
241240
- rules/Transform/Rector/String_/StringToClassConstantRector.php
242241

243242
# lack of generic array in nikic/php-parser

‎rules-tests/Renaming/Rector/StaticCall/RenameStaticMethodRector/Fixture/fixture.php.inc‎

Lines changed: 0 additions & 21 deletions
This file was deleted.

‎rules-tests/Renaming/Rector/StaticCall/RenameStaticMethodRector/Fixture/fixture2.php.inc‎

Lines changed: 0 additions & 27 deletions
This file was deleted.

‎rules-tests/Renaming/Rector/StaticCall/RenameStaticMethodRector/RenameStaticMethodRectorTest.php‎

Lines changed: 0 additions & 28 deletions
This file was deleted.

‎rules-tests/Renaming/Rector/StaticCall/RenameStaticMethodRector/Source/FormMacros.php‎

Lines changed: 0 additions & 10 deletions
This file was deleted.

‎rules-tests/Renaming/Rector/StaticCall/RenameStaticMethodRector/config/configured_rule.php‎

Lines changed: 0 additions & 24 deletions
This file was deleted.

‎rules/Renaming/Rector/StaticCall/RenameStaticMethodRector.php‎

Lines changed: 8 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,19 @@
66

77
use PhpParser\Node;
88
use PhpParser\Node\Expr\StaticCall;
9-
use PhpParser\Node\Identifier;
10-
use PhpParser\Node\Name\FullyQualified;
9+
use Rector\Configuration\Deprecation\Contract\DeprecatedInterface;
1110
use Rector\Contract\Rector\ConfigurableRectorInterface;
11+
use Rector\Exception\ShouldNotHappenException;
1212
use Rector\Rector\AbstractRector;
1313
use Rector\Renaming\ValueObject\RenameStaticMethod;
1414
use Rector\RuleDoc\CodeSample\ConfiguredCodeSample;
1515
use Rector\RuleDoc\RuleDefinition;
16-
use Webmozart\Assert\Assert;
1716

1817
/**
19-
* @see \Rector\Tests\Renaming\Rector\StaticCall\RenameStaticMethodRector\RenameStaticMethodRectorTest
18+
* @deprecated This rule is deprecated, as too niche, never used and needs project context. Write a custom rule for the exact project case instead.
2019
*/
21-
final class RenameStaticMethodRector extends AbstractRector implements ConfigurableRectorInterface
20+
final class RenameStaticMethodRector extends AbstractRector implements ConfigurableRectorInterface, DeprecatedInterface
2221
{
23-
/**
24-
* @var array<string, RenameStaticMethod[]>
25-
*/
26-
private array $staticMethodRenamesByOldMethod = [];
27-
2822
public function getRuleDefinition(): RuleDefinition
2923
{
3024
return new RuleDefinition('Turn method names to new ones', [
@@ -49,44 +43,16 @@ public function getNodeTypes(): array
4943
*/
5044
public function refactor(Node $node): ?Node
5145
{
52-
$methodName = $this->getName($node->name);
53-
if ($methodName === null) {
54-
return null;
55-
}
56-
57-
foreach ($this->staticMethodRenamesByOldMethod[strtolower($methodName)] ?? [] as $staticMethodRename) {
58-
if (! $this->isObjectType($node->class, $staticMethodRename->getOldObjectType())) {
59-
continue;
60-
}
61-
62-
return $this->rename($node, $staticMethodRename);
63-
}
64-
65-
return null;
46+
throw new ShouldNotHappenException(sprintf(
47+
'"%s" rule is deprecated, as too niche and part of no set; write a custom rule for the exact project case instead',
48+
self::class
49+
));
6650
}
6751

6852
/**
6953
* @param mixed[] $configuration
7054
*/
7155
public function configure(array $configuration): void
7256
{
73-
Assert::allIsAOf($configuration, RenameStaticMethod::class);
74-
75-
// bucket by lowercased old method name (method names are case-insensitive)
76-
$this->staticMethodRenamesByOldMethod = [];
77-
foreach ($configuration as $staticMethodRename) {
78-
$this->staticMethodRenamesByOldMethod[strtolower($staticMethodRename->getOldMethod())][] = $staticMethodRename;
79-
}
80-
}
81-
82-
private function rename(StaticCall $staticCall, RenameStaticMethod $renameStaticMethod): StaticCall
83-
{
84-
$staticCall->name = new Identifier($renameStaticMethod->getNewMethod());
85-
86-
if ($renameStaticMethod->hasClassChanged()) {
87-
$staticCall->class = new FullyQualified($renameStaticMethod->getNewClass());
88-
}
89-
90-
return $staticCall;
9157
}
9258
}

‎rules/Renaming/ValueObject/RenameStaticMethod.php‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@
77
use PHPStan\Type\ObjectType;
88
use Rector\Validation\RectorAssert;
99

10+
/**
11+
* @api used in deprecated RenameStaticMethodRector configs
12+
*/
1013
final readonly class RenameStaticMethod
1114
{
1215
public function __construct(

0 commit comments

Comments
 (0)