From 3f293929ea02f70eb1beb51a6fca0a6404e0f54e Mon Sep 17 00:00:00 2001 From: TomasVotruba Date: Thu, 26 Dec 2019 12:53:01 +0100 Subject: [PATCH 1/2] add test case for #2454 --- .../Fixture/skip_constant_value.php.inc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 packages/Php71/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/skip_constant_value.php.inc diff --git a/packages/Php71/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/skip_constant_value.php.inc b/packages/Php71/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/skip_constant_value.php.inc new file mode 100644 index 000000000000..119cd5acd509 --- /dev/null +++ b/packages/Php71/tests/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector/Fixture/skip_constant_value.php.inc @@ -0,0 +1,14 @@ + Date: Thu, 26 Dec 2019 12:59:30 +0100 Subject: [PATCH 2/2] skip non-variable non-scalars in BinaryOpBetweenNumberAndStringRector --- .../BinaryOp/BinaryOpBetweenNumberAndStringRector.php | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/Php71/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php b/packages/Php71/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php index e19baaff7e5e..e81a87e2019b 100644 --- a/packages/Php71/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php +++ b/packages/Php71/src/Rector/BinaryOp/BinaryOpBetweenNumberAndStringRector.php @@ -8,6 +8,8 @@ use PhpParser\Node\Expr; use PhpParser\Node\Expr\BinaryOp; use PhpParser\Node\Expr\BinaryOp\Concat; +use PhpParser\Node\Expr\Variable; +use PhpParser\Node\Scalar; use PhpParser\Node\Scalar\LNumber; use PhpParser\Node\Scalar\String_; use PHPStan\Type\Constant\ConstantStringType; @@ -88,6 +90,11 @@ public function refactor(Node $node): ?Node private function isStringOrStaticNonNumbericString(Expr $expr): bool { + // replace only scalar values, not variables/constants/etc. + if (! $expr instanceof Scalar && ! $expr instanceof Variable) { + return false; + } + $value = null; $exprStaticType = $this->getStaticType($expr);