mirror of
https://github.com/rectorphp/rector.git
synced 2025-04-24 09:25:42 +02:00
Merge pull request #1031 from rectorphp/fix-remounu
Remove ctor param in RemoveUnusedParameterRector
This commit is contained in:
commit
1adc55d74f
@ -3,6 +3,7 @@
|
||||
namespace Rector\DeadCode\Rector\ClassMethod;
|
||||
|
||||
use PhpParser\Node;
|
||||
use PhpParser\Node\Param;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use Rector\NodeTypeResolver\Node\Attribute;
|
||||
@ -89,21 +90,36 @@ CODE_SAMPLE
|
||||
return null;
|
||||
}
|
||||
|
||||
$unusedParameters = $this->resolveUnusedParameters($node);
|
||||
if ($unusedParameters === []) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$this->removeNodes($unusedParameters);
|
||||
|
||||
return $node;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Param[]
|
||||
*/
|
||||
private function resolveUnusedParameters(ClassMethod $classMethodNode): array
|
||||
{
|
||||
$unusedParameters = [];
|
||||
foreach ($node->params as $i => $param) {
|
||||
if ($this->classMethodMaintainer->isParameterUsedMethod($param, $node)) {
|
||||
// reset to keep order of removed arguments
|
||||
$unusedParameters = [];
|
||||
|
||||
foreach ((array) $classMethodNode->params as $i => $param) {
|
||||
if ($this->classMethodMaintainer->isParameterUsedMethod($param, $classMethodNode)) {
|
||||
// reset to keep order of removed arguments, if not construtctor - probably autowired
|
||||
if (! $this->isName($classMethodNode, '__construct')) {
|
||||
$unusedParameters = [];
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
$unusedParameters[$i] = $param;
|
||||
}
|
||||
|
||||
foreach ($unusedParameters as $unusedParameter) {
|
||||
$this->removeNode($unusedParameter);
|
||||
}
|
||||
|
||||
return $node;
|
||||
return $unusedParameters;
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
namespace Rector\DeadCode\Tests\Rector\ClassMethod\RemoveUnusedParameterRector\Fixture;
|
||||
|
||||
class InBetweenParameter
|
||||
{
|
||||
private $value;
|
||||
private $value3;
|
||||
|
||||
public function __construct($value, $value2, $value3)
|
||||
{
|
||||
$this->value = $value;
|
||||
$this->value3 = $value3;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
-----
|
||||
<?php
|
||||
|
||||
namespace Rector\DeadCode\Tests\Rector\ClassMethod\RemoveUnusedParameterRector\Fixture;
|
||||
|
||||
class InBetweenParameter
|
||||
{
|
||||
private $value;
|
||||
private $value3;
|
||||
|
||||
public function __construct($value, $value3)
|
||||
{
|
||||
$this->value = $value;
|
||||
$this->value3 = $value3;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
@ -4,7 +4,7 @@ namespace Rector\DeadCode\Tests\Rector\ClassMethod\RemoveUnusedParameterRector\F
|
||||
|
||||
class Order
|
||||
{
|
||||
public function __construct($value, $value2, $value3, $value4)
|
||||
public function aloha($value, $value2, $value3, $value4)
|
||||
{
|
||||
$result = $value + $value3;
|
||||
}
|
||||
@ -18,7 +18,7 @@ namespace Rector\DeadCode\Tests\Rector\ClassMethod\RemoveUnusedParameterRector\F
|
||||
|
||||
class Order
|
||||
{
|
||||
public function __construct($value, $value2, $value3)
|
||||
public function aloha($value, $value2, $value3)
|
||||
{
|
||||
$result = $value + $value3;
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ final class RemoveUnusedParameterRectorTest extends AbstractRectorTestCase
|
||||
__DIR__ . '/Fixture/fixture.php.inc',
|
||||
__DIR__ . '/Fixture/order.php.inc',
|
||||
__DIR__ . '/Fixture/parent_required.php.inc',
|
||||
__DIR__ . '/Fixture/in_between_parameter.php.inc',
|
||||
]);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user