From 45d9a078c2f69d9b695e2b52ba1c14c0a1f870f0 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 5 Feb 2026 16:06:11 +0700 Subject: [PATCH 1/5] [DeadCode] No need additional parentheses () on multiply to function call --- .../Fixture/multiply_function_call.php.inc | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/multiply_function_call.php.inc diff --git a/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/multiply_function_call.php.inc b/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/multiply_function_call.php.inc new file mode 100644 index 00000000000..9756a8a7367 --- /dev/null +++ b/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/multiply_function_call.php.inc @@ -0,0 +1,27 @@ + +----- + From 5e4a11bdb663401e2c9be5042e0f801ff4120fd8 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 5 Feb 2026 16:09:49 +0700 Subject: [PATCH 2/5] fix --- .../Rector/Plus/RemoveDeadZeroAndOneOperationRector.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php index de8f0d0f620..56dac43cb35 100644 --- a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php +++ b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php @@ -176,6 +176,10 @@ private function processBinaryPlusAndMinus(Plus | Minus $binaryOp): ?Expr private function isMulParenthesized(File $file, Mul $mul): bool { + if (! $mul->right instanceof BinaryOp) { + return false; + } + $oldTokens = $file->getOldTokens(); $endTokenPost = $mul->getEndTokenPos(); From 5b4d7735869e2d2d8cb1be0680d35abc59b3fa16 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 5 Feb 2026 16:15:00 +0700 Subject: [PATCH 3/5] fix --- .../RemoveDeadZeroAndOneOperationRector.php | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php index 56dac43cb35..16b033dd848 100644 --- a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php +++ b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php @@ -183,7 +183,28 @@ private function isMulParenthesized(File $file, Mul $mul): bool $oldTokens = $file->getOldTokens(); $endTokenPost = $mul->getEndTokenPos(); - return isset($oldTokens[$endTokenPost]) && (string) $oldTokens[$endTokenPost] === ')'; + if (isset($oldTokens[$endTokenPost]) && (string) $oldTokens[$endTokenPost] === ')') { + $startTokenPos = $mul->right->getStartTokenPos(); + $previousEndTokenPost = $mul->left->getEndTokenPos(); + + while ($startTokenPos > $previousEndTokenPost) { + --$startTokenPos; + + if (! isset($oldTokens[$startTokenPos])) { + return false; + } + + if (trim((string) $oldTokens[$startTokenPos]) === '') { + continue; + } + + return (string) $oldTokens[$startTokenPos] === '('; + } + + return true; + } + + return false; } private function processBinaryMulAndDiv(Mul | Div $binaryOp): ?Expr From 61735d9c70aaa9e5a3063cb9ad0e3582ff5740f8 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 5 Feb 2026 16:16:13 +0700 Subject: [PATCH 4/5] add spaced --- .../Fixture/with_parentheses.php.inc | 2 ++ .../Rector/Plus/RemoveDeadZeroAndOneOperationRector.php | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/with_parentheses.php.inc b/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/with_parentheses.php.inc index 1a2fc7268c4..1198a8601ae 100644 --- a/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/with_parentheses.php.inc +++ b/rules-tests/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/with_parentheses.php.inc @@ -7,6 +7,7 @@ class WithParentheses public function run() { $a = 1 * (2 + 3) * 4; + $a = 1 * ( 2 + 3 ) * 4; } } @@ -21,6 +22,7 @@ class WithParentheses public function run() { $a = (2 + 3) * 4; + $a = (2 + 3) * 4; } } diff --git a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php index 16b033dd848..94ec19b2222 100644 --- a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php +++ b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php @@ -201,7 +201,7 @@ private function isMulParenthesized(File $file, Mul $mul): bool return (string) $oldTokens[$startTokenPos] === '('; } - return true; + return false; } return false; From 10dee67ef49893c515e74e681207395a0075a370 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Thu, 5 Feb 2026 16:16:58 +0700 Subject: [PATCH 5/5] add spaced --- .../DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php | 1 + 1 file changed, 1 insertion(+) diff --git a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php index 94ec19b2222..9eb19cb0087 100644 --- a/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php +++ b/rules/DeadCode/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php @@ -194,6 +194,7 @@ private function isMulParenthesized(File $file, Mul $mul): bool return false; } + // handle space before open parentheses if (trim((string) $oldTokens[$startTokenPos]) === '') { continue; }