diff --git a/rules-tests/CodeQuality/Rector/If_/CombineIfRector/Fixture/with_assign.php.inc b/rules-tests/CodeQuality/Rector/If_/CombineIfRector/Fixture/with_assign.php.inc new file mode 100644 index 00000000000..b9733cb238c --- /dev/null +++ b/rules-tests/CodeQuality/Rector/If_/CombineIfRector/Fixture/with_assign.php.inc @@ -0,0 +1,33 @@ +getCond2Value()) === null) { + return 'foo'; + } + } + } +} + +?> +----- +getCond2Value()) === null) { + return 'foo'; + } + } +} + +?> diff --git a/rules/CodeQuality/Rector/If_/CombineIfRector.php b/rules/CodeQuality/Rector/If_/CombineIfRector.php index a25ba8dfc01..17c81ccb391 100644 --- a/rules/CodeQuality/Rector/If_/CombineIfRector.php +++ b/rules/CodeQuality/Rector/If_/CombineIfRector.php @@ -98,6 +98,10 @@ public function refactor(Node $node): ?Node $cond = $cond->right; } + if ($subIf->cond instanceof BinaryOp && ! $subIf->cond->left instanceof BinaryOp) { + $subIf->cond->left->setAttribute(AttributeKey::ORIGINAL_NODE, null); + } + $node->cond = new BooleanAnd($node->cond, $subIf->cond); $node->stmts = $subIf->stmts;