Skip to content

Commit 57b1e5c

Browse files
authored
[DeadCode] Skip used via compact() on RemoveUnusedClosureVariableUseRector (#7431)
* [DeadCode] Skip used via compact() on RemoveUnusedClosureVariableUseRector * Fix
1 parent 8d22ced commit 57b1e5c

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace Rector\Tests\DeadCode\Rector\Closure\RemoveUnusedClosureVariableUseRector\Fixture;
4+
5+
/**
6+
* @see https://3v4l.org/9vhce
7+
*/
8+
final class SkipUsedViaCompact
9+
{
10+
public function run($value)
11+
{
12+
return function () use ($value) {
13+
$v = compact('value');
14+
15+
return $v;
16+
};
17+
}
18+
}

rules/DeadCode/Rector/Concat/RemoveUnusedClosureVariableUseRector.php

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use PhpParser\Node;
88
use PhpParser\Node\Expr\Closure;
9+
use Rector\DeadCode\NodeAnalyzer\ExprUsedInNodeAnalyzer;
910
use Rector\PhpParser\Node\BetterNodeFinder;
1011
use Rector\Rector\AbstractRector;
1112
use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
@@ -17,7 +18,8 @@
1718
final class RemoveUnusedClosureVariableUseRector extends AbstractRector
1819
{
1920
public function __construct(
20-
private readonly BetterNodeFinder $betterNodeFinder
21+
private readonly BetterNodeFinder $betterNodeFinder,
22+
private readonly ExprUsedInNodeAnalyzer $exprUsedInNodeAnalyzer
2123
) {
2224
}
2325

@@ -72,7 +74,10 @@ public function refactor(Node $node): ?Node
7274
continue;
7375
}
7476

75-
$isUseUsed = (bool) $this->betterNodeFinder->findVariableOfName($node->stmts, $useVariableName);
77+
$isUseUsed = (bool) $this->betterNodeFinder->findFirst(
78+
$node->stmts,
79+
fn (Node $subNode): bool => $this->exprUsedInNodeAnalyzer->isUsed($subNode, $useVariable->var)
80+
);
7681
if ($isUseUsed) {
7782
continue;
7883
}

0 commit comments

Comments
 (0)