Skip to content

Commit 2c27d00

Browse files
committed
[DeadCode] Skip with elseif/else on RemoveNextSameValueConditionRector
1 parent ed60a22 commit 2c27d00

2 files changed

Lines changed: 31 additions & 0 deletions

File tree

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Rector\Tests\DeadCode\Rector\Stmt\RemoveNextSameValueConditionRector\Fixture;
4+
5+
final class SkipWithElseif
6+
{
7+
public function __construct(array $items)
8+
{
9+
$count = 100;
10+
if ($items === []) {
11+
$count = 0;
12+
}
13+
14+
if ($items === []) {
15+
return $count;
16+
} else {
17+
return 'test';
18+
}
19+
}
20+
}

rules/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector.php

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

77
use PhpParser\Node;
88
use PhpParser\Node\Expr\Variable;
9+
use PhpParser\Node\Stmt\Else_;
910
use PhpParser\Node\Stmt\If_;
1011
use Rector\DeadCode\SideEffect\SideEffectNodeDetector;
1112
use Rector\PhpParser\Enum\NodeGroup;
@@ -90,6 +91,11 @@ public function refactor(Node $node): ?Node
9091
continue;
9192
}
9293

94+
// only when no elseif/else in current if
95+
if ($stmt->elseifs !== [] || $stmt->else instanceof Else_) {
96+
continue;
97+
}
98+
9399
// first condition must be without side effect
94100
if ($this->sideEffectNodeDetector->detect($stmt->cond)) {
95101
continue;
@@ -108,6 +114,11 @@ public function refactor(Node $node): ?Node
108114
continue;
109115
}
110116

117+
// only when no elseif/else in next stmt
118+
if ($nextStmt->elseifs !== [] || $nextStmt->else instanceof Else_) {
119+
continue;
120+
}
121+
111122
$stmt->stmts = array_merge($stmt->stmts, $nextStmt->stmts);
112123

113124
// remove next node

0 commit comments

Comments
 (0)