Skip to content

Commit 63a2f16

Browse files
authored
[Arguments] Fix ReplaceArgumentDefaultValueRector re-applying already-migrated imported class constant (#8475)
1 parent c55c4ae commit 63a2f16

4 files changed

Lines changed: 24 additions & 3 deletions

File tree

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace Rector\Tests\Arguments\Rector\ClassMethod\ReplaceArgumentDefaultValueRector\Fixture;
4+
5+
use Rector\Tests\Arguments\Rector\ClassMethod\ReplaceArgumentDefaultValueRector\Source\SomeSortableObject;
6+
7+
class SkipImportedClassConstAlreadyReplaced
8+
{
9+
public function run()
10+
{
11+
$object = new SomeSortableObject();
12+
$object->sortBy(SomeSortableObject::SORT_ORDER_DESC);
13+
}
14+
}

‎rules-tests/Arguments/Rector/ClassMethod/ReplaceArgumentDefaultValueRector/config/configured_rule.php‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,5 +94,13 @@
9494
'ASC',
9595
'self::SORT_ORDER_DESC'
9696
),
97+
98+
new ReplaceArgumentDefaultValue(
99+
SomeSortableObject::class,
100+
'sortBy',
101+
0,
102+
'DESC',
103+
SomeSortableObject::class . '::SORT_ORDER_DESC'
104+
),
97105
]);
98106
};

‎rules/Arguments/ArgumentDefaultValueReplacer.php‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,6 @@ private function processArgs(
165165
$normalizedValueAfter = $this->normalizeValue($replaceArgumentDefaultValue->getValueAfter());
166166
if ($particularArg->value instanceof ClassConstFetch
167167
&& $particularArg->value->class instanceof Name
168-
&& $particularArg->value->class->isSpecialClassName()
169168
&& $normalizedValueAfter instanceof ClassConstFetch
170169
&& is_string($replaceArgumentDefaultValue->getValueAfter())
171170
&& str_contains($replaceArgumentDefaultValue->getValueAfter(), '::')) {

‎rules/Arguments/Rector/ClassMethod/ReplaceArgumentDefaultValueRector.php‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ public function refactor(Node $node): MethodCall|StaticCall|ClassMethod|New_|nul
105105
$currentNode,
106106
$replaceArgumentDefaultValue
107107
);
108-
if ($replacedNode !== null && $replacedNode !== $currentNode) {
108+
if ($replacedNode !== null) {
109109
$currentNode = $replacedNode;
110110
$hasChanged = true;
111111
}
@@ -142,7 +142,7 @@ private function refactorNew(New_ $new): ?New_
142142
$currentNode,
143143
$replaceArgumentDefaultValue
144144
);
145-
if ($replacedNode !== null && $replacedNode !== $currentNode) {
145+
if ($replacedNode !== null) {
146146
$currentNode = $replacedNode;
147147
$hasChanged = true;
148148
}

0 commit comments

Comments
 (0)