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); 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 @@ +