Skip to content

Commit 512ccd2

Browse files
authored
fix: RenameMethodRector does not rename trait methods (#6928)
* fix: RenameMethodRector does not rename trait methods * adjust order of if condition * add more tests * more tests adjustments
1 parent 97f88fe commit 512ccd2

File tree

5 files changed

+68
-1
lines changed

5 files changed

+68
-1
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
<?php
2+
3+
namespace Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Fixture;
4+
5+
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\SomeTrait;
6+
7+
final class RenameTraitMethodWhichIsOverwritten
8+
{
9+
use SomeTrait;
10+
11+
public function _test()
12+
{
13+
}
14+
}
15+
16+
?>
17+
-----
18+
<?php
19+
20+
namespace Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Fixture;
21+
22+
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\SomeTrait;
23+
24+
final class RenameTraitMethodWhichIsOverwritten
25+
{
26+
use SomeTrait;
27+
28+
public function test()
29+
{
30+
}
31+
}
32+
33+
?>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Fixture;
4+
5+
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\SomeTrait;
6+
7+
final class SkipRenameMethodWhichIsNotInTrait
8+
{
9+
use SomeTrait;
10+
11+
public function _otherMethod()
12+
{
13+
}
14+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source;
6+
7+
trait SomeTrait
8+
{
9+
public function _test()
10+
{
11+
}
12+
}

rules-tests/Renaming/Rector/MethodCall/RenameMethodRector/config/configured_rule.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\Foo;
1414
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\NewInterface;
1515
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\SomeSubscriber;
16+
use Rector\Tests\Renaming\Rector\MethodCall\RenameMethodRector\Source\SomeTrait;
1617

1718
return static function (RectorConfig $rectorConfig): void {
1819
$rectorConfig->ruleWithConfiguration(RenameMethodRector::class, [
@@ -39,5 +40,8 @@
3940

4041
// enum method
4142
new MethodCallRename(SomeEnumWithMethod::class, 'oldEnumMethod', 'newEnumMethod'),
43+
44+
// trait method
45+
new MethodCallRename(SomeTrait::class, '_test', 'test'),
4246
]);
4347
};

src/NodeTypeResolver/NodeTypeResolver.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,11 @@ public function isMethodStaticCallOrClassMethodObjectType(Node $node, ObjectType
337337
return true;
338338
}
339339

340-
return $classReflection->is($objectType->getClassName());
340+
if ($classReflection->is($objectType->getClassName())) {
341+
return true;
342+
}
343+
344+
return $classReflection->hasTraitUse($objectType->getClassName());
341345
}
342346

343347
/**

0 commit comments

Comments
 (0)