Skip to content

Commit 0db8267

Browse files
committed
Updated Rector to commit 8d22cedbbd93a4945cf0fd97da07c486488b533a
rectorphp/rector-src@8d22ced [dead-code] Add RemoveUnusedVariableUseRector (#7430)
1 parent 0d5db11 commit 0db8267

File tree

5 files changed

+85
-2
lines changed

5 files changed

+85
-2
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
<?php
2+
3+
declare (strict_types=1);
4+
namespace Rector\DeadCode\Rector\Concat;
5+
6+
use PhpParser\Node;
7+
use PhpParser\Node\Expr\Closure;
8+
use Rector\PhpParser\Node\BetterNodeFinder;
9+
use Rector\Rector\AbstractRector;
10+
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
11+
use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
12+
/**
13+
* @see \Rector\Tests\DeadCode\Rector\Closure\RemoveUnusedClosureVariableUseRector\RemoveUnusedClosureVariableUseRectorTest
14+
*/
15+
final class RemoveUnusedClosureVariableUseRector extends AbstractRector
16+
{
17+
/**
18+
* @readonly
19+
*/
20+
private BetterNodeFinder $betterNodeFinder;
21+
public function __construct(BetterNodeFinder $betterNodeFinder)
22+
{
23+
$this->betterNodeFinder = $betterNodeFinder;
24+
}
25+
public function getRuleDefinition(): RuleDefinition
26+
{
27+
return new RuleDefinition('Remove unused variable in use() of closure', [new CodeSample(<<<'CODE_SAMPLE'
28+
$var = 1;
29+
30+
$closure = function() use ($var) {
31+
echo 'Hello World';
32+
};
33+
34+
CODE_SAMPLE
35+
, <<<'CODE_SAMPLE'
36+
$var = 1;
37+
$closure = function() {
38+
echo 'Hello World';
39+
};
40+
41+
CODE_SAMPLE
42+
)]);
43+
}
44+
/**
45+
* @return array<class-string<Node>>
46+
*/
47+
public function getNodeTypes(): array
48+
{
49+
return [Closure::class];
50+
}
51+
/**
52+
* @param Closure $node
53+
*/
54+
public function refactor(Node $node): ?Node
55+
{
56+
if ($node->uses === []) {
57+
return null;
58+
}
59+
$hasChanged = \false;
60+
foreach ($node->uses as $key => $useVariable) {
61+
$useVariableName = $this->getName($useVariable->var);
62+
if (!is_string($useVariableName)) {
63+
continue;
64+
}
65+
$isUseUsed = (bool) $this->betterNodeFinder->findVariableOfName($node->stmts, $useVariableName);
66+
if ($isUseUsed) {
67+
continue;
68+
}
69+
unset($node->uses[$key]);
70+
$hasChanged = \true;
71+
}
72+
if ($hasChanged) {
73+
// reset keys, to keep as expected
74+
$node->uses = array_values($node->uses);
75+
return $node;
76+
}
77+
return null;
78+
}
79+
}

src/Application/VersionResolver.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ final class VersionResolver
1919
* @api
2020
* @var string
2121
*/
22-
public const PACKAGE_VERSION = '3b1717892dd2502a9ecdd67c8e498fe118ed687a';
22+
public const PACKAGE_VERSION = '8d22cedbbd93a4945cf0fd97da07c486488b533a';
2323
/**
2424
* @api
2525
* @var string
2626
*/
27-
public const RELEASE_DATE = '2025-10-05 15:33:37';
27+
public const RELEASE_DATE = '2025-10-05 15:49:11';
2828
/**
2929
* @var int
3030
*/

src/Config/Level/DeadCodeLevel.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnExprInConstructRector;
2727
use Rector\DeadCode\Rector\ClassMethod\RemoveUselessReturnTagRector;
2828
use Rector\DeadCode\Rector\Concat\RemoveConcatAutocastRector;
29+
use Rector\DeadCode\Rector\Concat\RemoveUnusedClosureVariableUseRector;
2930
use Rector\DeadCode\Rector\ConstFetch\RemovePhpVersionIdCheckRector;
3031
use Rector\DeadCode\Rector\Expression\RemoveDeadStmtRector;
3132
use Rector\DeadCode\Rector\Expression\SimplifyMirrorAssignRector;
@@ -110,6 +111,7 @@ final class DeadCodeLevel
110111
ReduceAlwaysFalseIfOrRector::class,
111112
RemoveUnusedPrivateClassConstantRector::class,
112113
RemoveUnusedPrivatePropertyRector::class,
114+
RemoveUnusedClosureVariableUseRector::class,
113115
RemoveDuplicatedCaseInSwitchRector::class,
114116
RemoveDeadInstanceOfRector::class,
115117
RemoveDeadCatchRector::class,

vendor/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1376,6 +1376,7 @@
13761376
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnExprInConstructRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnExprInConstructRector.php',
13771377
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnTagRector' => $baseDir . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector.php',
13781378
'Rector\\DeadCode\\Rector\\Concat\\RemoveConcatAutocastRector' => $baseDir . '/rules/DeadCode/Rector/Concat/RemoveConcatAutocastRector.php',
1379+
'Rector\\DeadCode\\Rector\\Concat\\RemoveUnusedClosureVariableUseRector' => $baseDir . '/rules/DeadCode/Rector/Concat/RemoveUnusedClosureVariableUseRector.php',
13791380
'Rector\\DeadCode\\Rector\\ConstFetch\\RemovePhpVersionIdCheckRector' => $baseDir . '/rules/DeadCode/Rector/ConstFetch/RemovePhpVersionIdCheckRector.php',
13801381
'Rector\\DeadCode\\Rector\\Expression\\RemoveDeadStmtRector' => $baseDir . '/rules/DeadCode/Rector/Expression/RemoveDeadStmtRector.php',
13811382
'Rector\\DeadCode\\Rector\\Expression\\SimplifyMirrorAssignRector' => $baseDir . '/rules/DeadCode/Rector/Expression/SimplifyMirrorAssignRector.php',

vendor/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,6 +1624,7 @@ class ComposerStaticInitaec8d909b4f5341922f1774ccd2ec774
16241624
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnExprInConstructRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnExprInConstructRector.php',
16251625
'Rector\\DeadCode\\Rector\\ClassMethod\\RemoveUselessReturnTagRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ClassMethod/RemoveUselessReturnTagRector.php',
16261626
'Rector\\DeadCode\\Rector\\Concat\\RemoveConcatAutocastRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Concat/RemoveConcatAutocastRector.php',
1627+
'Rector\\DeadCode\\Rector\\Concat\\RemoveUnusedClosureVariableUseRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Concat/RemoveUnusedClosureVariableUseRector.php',
16271628
'Rector\\DeadCode\\Rector\\ConstFetch\\RemovePhpVersionIdCheckRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/ConstFetch/RemovePhpVersionIdCheckRector.php',
16281629
'Rector\\DeadCode\\Rector\\Expression\\RemoveDeadStmtRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Expression/RemoveDeadStmtRector.php',
16291630
'Rector\\DeadCode\\Rector\\Expression\\SimplifyMirrorAssignRector' => __DIR__ . '/../..' . '/rules/DeadCode/Rector/Expression/SimplifyMirrorAssignRector.php',

0 commit comments

Comments
 (0)