Merge pull request #1031 from rectorphp/fix-remounu

Remove ctor param in RemoveUnusedParameterRector
This commit is contained in:
Tomáš Votruba 2019-02-09 08:42:39 -08:00 committed by GitHub
commit 1adc55d74f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 63 additions and 11 deletions

View File

@ -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;
}
}

View File

@ -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;
}
}
?>

View File

@ -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;
}

View File

@ -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',
]);
}