From b3f55428b32b8cee63475b7caff7fc5998f2f442 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Sun, 19 May 2019 12:37:51 +0200 Subject: [PATCH] [PHP 7.1] Add BinaryOpBetweenNumberAndStringRector --- config/level/php/php71.yaml | 1 + .../BinaryOpBetweenNumberAndStringRector.php | 88 +++++++++++++++++++ ...naryOpBetweenNumberAndStringRectorTest.php | 19 ++++ .../Fixture/fixture.php.inc | 43 +++++++++ 4 files changed, 151 insertions(+) create mode 100644 packages/Php/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php create mode 100644 packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/BinaryOpBetweenNumberAndStringRectorTest.php create mode 100644 packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/fixture.php.inc diff --git a/config/level/php/php71.yaml b/config/level/php/php71.yaml index b0319cb3ee6..1e23a228223 100644 --- a/config/level/php/php71.yaml +++ b/config/level/php/php71.yaml @@ -7,3 +7,4 @@ services: Rector\Php\Rector\Assign\AssignArrayToStringRector: ~ Rector\Php\Rector\FuncCall\CountOnNullRector: ~ Rector\Php\Rector\FuncCall\RemoveExtraParametersRector: ~ + Rector\Php\Rector\BinaryOp\BinaryOpBetweenNumberAndStringRector: ~ diff --git a/packages/Php/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php b/packages/Php/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php new file mode 100644 index 00000000000..93597981aab --- /dev/null +++ b/packages/Php/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php @@ -0,0 +1,88 @@ +isStringyType($node->left) && $this->isIntegerType($node->right)) { + $node->left = new Node\Scalar\LNumber(0); + return $node; + } + + if ($this->isStringyType($node->right) && $this->isIntegerType($node->left)) { + $node->right = new Node\Scalar\LNumber(0); + return $node; + } + + return null; + } +} diff --git a/packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/BinaryOpBetweenNumberAndStringRectorTest.php b/packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/BinaryOpBetweenNumberAndStringRectorTest.php new file mode 100644 index 00000000000..1b3abb82772 --- /dev/null +++ b/packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/BinaryOpBetweenNumberAndStringRectorTest.php @@ -0,0 +1,19 @@ +doTestFiles([__DIR__ . '/Fixture/fixture.php.inc']); + } + + protected function getRectorClass(): string + { + return BinaryOpBetweenNumberAndStringRector::class; + } +} diff --git a/packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/fixture.php.inc b/packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/fixture.php.inc new file mode 100644 index 00000000000..8148e699034 --- /dev/null +++ b/packages/Php/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/fixture.php.inc @@ -0,0 +1,43 @@ + +----- +