From cad4fb3591892e73b308fb632907013ebedc9360 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Wed, 27 Aug 2025 22:23:04 +0700 Subject: [PATCH] [CodeQuality] Handle parentheses inner if with assign on CombineIfRector --- .../Fixture/with_assign.php.inc | 33 +++++++++++++++++++ .../Rector/If_/CombineIfRector.php | 4 +++ 2 files changed, 37 insertions(+) create mode 100644 rules-tests/CodeQuality/Rector/If_/CombineIfRector/Fixture/with_assign.php.inc 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;