File tree Expand file tree Collapse file tree
rules-tests/DeadCode/Rector/Stmt/RemoveNextSameValueConditionRector/Fixture
rules/DeadCode/Rector/Stmt Expand file tree Collapse file tree Original file line number Diff line number Diff line change 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+ }
Original file line number Diff line number Diff line change 66
77use PhpParser \Node ;
88use PhpParser \Node \Expr \Variable ;
9+ use PhpParser \Node \Stmt \Else_ ;
910use PhpParser \Node \Stmt \If_ ;
1011use Rector \DeadCode \SideEffect \SideEffectNodeDetector ;
1112use 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
You can’t perform that action at this time.
0 commit comments