From e548f1071b4ac47d157d300644e776200dfbd5f5 Mon Sep 17 00:00:00 2001 From: Jeroen Smit Date: Mon, 11 Nov 2019 21:03:23 +0100 Subject: [PATCH 1/2] Fix removing 0 when on left side of Minus --- .../Plus/RemoveDeadZeroAndOneOperationRector.php | 2 +- .../Fixture/zero_minus.php.inc | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc diff --git a/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php index 6421683e53db..0db8ddda854e 100644 --- a/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php +++ b/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php @@ -147,7 +147,7 @@ private function processBinaryOp(Node $node): ?Expr */ private function processBinaryPlusAndMinus(BinaryOp $binaryOp): ?Expr { - if ($this->isValue($binaryOp->left, 0)) { + if ($binaryOp instanceof Plus && $this->isValue($binaryOp->left, 0)) { if ($this->isNumberType($binaryOp->right)) { return $binaryOp->right; } diff --git a/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc b/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc new file mode 100644 index 000000000000..0a73352fb805 --- /dev/null +++ b/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc @@ -0,0 +1,12 @@ + Date: Mon, 11 Nov 2019 22:24:38 +0100 Subject: [PATCH 2/2] Replace 0 minus with UnaryMinus --- .../Plus/RemoveDeadZeroAndOneOperationRector.php | 6 +++++- .../Fixture/zero_minus.php.inc | 13 +++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php b/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php index 0db8ddda854e..ffe7c059f09d 100644 --- a/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php +++ b/packages/DeadCode/src/Rector/Plus/RemoveDeadZeroAndOneOperationRector.php @@ -12,6 +12,7 @@ use PhpParser\Node\Expr\BinaryOp\Minus; use PhpParser\Node\Expr\BinaryOp\Mul; use PhpParser\Node\Expr\BinaryOp\Plus; +use PhpParser\Node\Expr\UnaryMinus; use Rector\Rector\AbstractRector; use Rector\RectorDefinition\CodeSample; use Rector\RectorDefinition\RectorDefinition; @@ -147,8 +148,11 @@ private function processBinaryOp(Node $node): ?Expr */ private function processBinaryPlusAndMinus(BinaryOp $binaryOp): ?Expr { - if ($binaryOp instanceof Plus && $this->isValue($binaryOp->left, 0)) { + if ($this->isValue($binaryOp->left, 0)) { if ($this->isNumberType($binaryOp->right)) { + if ($binaryOp instanceof Minus) { + return new UnaryMinus($binaryOp->right); + } return $binaryOp->right; } } diff --git a/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc b/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc index 0a73352fb805..54614ef35c01 100644 --- a/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc +++ b/packages/DeadCode/tests/Rector/Plus/RemoveDeadZeroAndOneOperationRector/Fixture/zero_minus.php.inc @@ -9,4 +9,17 @@ class Assigns $value = 0 - $value; } } +?> +----- +