diff --git a/src/Mutator/Arithmetic/DivEqual.php b/src/Mutator/Arithmetic/DivEqual.php index bee24adb3..cf58ae96f 100644 --- a/src/Mutator/Arithmetic/DivEqual.php +++ b/src/Mutator/Arithmetic/DivEqual.php @@ -78,6 +78,27 @@ public function mutate(Node $node): iterable public function canMutate(Node $node): bool { - return $node instanceof Node\Expr\AssignOp\Div; + if (!$node instanceof Node\Expr\AssignOp\Div) { + return false; + } + + if ($this->isNumericOne($node->expr)) { + return false; + } + + if ($node->expr instanceof Node\Expr\UnaryMinus && $this->isNumericOne($node->expr->expr)) { + return false; + } + + return true; + } + + private function isNumericOne(Node $node): bool + { + if ($node instanceof Node\Scalar\LNumber && $node->value === 1) { + return true; + } + + return $node instanceof Node\Scalar\DNumber && $node->value === 1.0; } } diff --git a/tests/phpunit/Mutator/Arithmetic/DivEqualTest.php b/tests/phpunit/Mutator/Arithmetic/DivEqualTest.php index 423323a5e..ba35ff743 100644 --- a/tests/phpunit/Mutator/Arithmetic/DivEqualTest.php +++ b/tests/phpunit/Mutator/Arithmetic/DivEqualTest.php @@ -73,6 +73,46 @@ public function mutationsProvider(): iterable [ + <<<'PHP' + [ + <<<'PHP' + [ + <<<'PHP' + [ + <<<'PHP' +