From bd6a585d08957985e2f97acb03ba9650adddec0a Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 12 Oct 2025 17:00:17 +0700 Subject: [PATCH 1/2] [DeadCode] Skip native function with side effect on RemoveConditionExactReturnRector --- .../Fixture/skip_side_effect_native.php.inc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 rules-tests/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector/Fixture/skip_side_effect_native.php.inc diff --git a/rules-tests/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector/Fixture/skip_side_effect_native.php.inc b/rules-tests/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector/Fixture/skip_side_effect_native.php.inc new file mode 100644 index 00000000000..a1f23a3d273 --- /dev/null +++ b/rules-tests/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector/Fixture/skip_side_effect_native.php.inc @@ -0,0 +1,15 @@ + Date: Sun, 12 Oct 2025 17:02:40 +0700 Subject: [PATCH 2/2] fix --- .../Rector/Stmt/RemoveConditionExactReturnRector.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/rules/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector.php b/rules/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector.php index 6e1dece3316..b7ccb574b5a 100644 --- a/rules/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector.php +++ b/rules/DeadCode/Rector/Stmt/RemoveConditionExactReturnRector.php @@ -13,6 +13,7 @@ use PhpParser\Node\Stmt\If_; use PhpParser\Node\Stmt\Return_; use Rector\Contract\PhpParser\Node\StmtsAwareInterface; +use Rector\DeadCode\SideEffect\SideEffectNodeDetector; use Rector\Rector\AbstractRector; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -22,6 +23,11 @@ */ final class RemoveConditionExactReturnRector extends AbstractRector { + public function __construct( + private readonly SideEffectNodeDetector $sideEffectNodeDetector + ) { + } + public function getRuleDefinition(): RuleDefinition { return new RuleDefinition( @@ -94,12 +100,8 @@ public function refactor(Node $node): ?Node } $identicalOrEqual = $stmt->cond; - // skip obvious complexity - if ($identicalOrEqual->right instanceof MethodCall) { - continue; - } - if ($identicalOrEqual->right instanceof StaticCall) { + if ($this->sideEffectNodeDetector->detect($identicalOrEqual->right)) { continue; }