Skip to content

Commit 609d703

Browse files
jaroslavlibalondrejmirtes
authored andcommitted
Fix scale parameter check in bc math return type extension
1 parent ffccecd commit 609d703

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

src/Type/Php/BcMathStringOrNullReturnTypeExtension.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function getTypeFromFunctionCall(FunctionReflection $functionReflection,
6060
$thirdArgument = $scope->getType($functionCall->args[2]->value);
6161
$thirdArgumentIsNumeric = ($thirdArgument instanceof ConstantScalarType && is_numeric($thirdArgument->getValue())) || $thirdArgument instanceof IntegerType;
6262

63-
if ($thirdArgument instanceof ConstantScalarType && ($this->isZero($thirdArgument->getValue()) || !is_numeric($thirdArgument->getValue()))) {
63+
if ($thirdArgument instanceof ConstantScalarType && !is_numeric($thirdArgument->getValue())) {
6464
return new NullType();
6565
}
6666

tests/PHPStan/Analyser/data/bcmath-dynamic-return.php

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
\PHPStan\Analyser\assertType('null', bcdiv('10', 0.0)); // Warning: Division by zero
2424
\PHPStan\Analyser\assertType('string', bcdiv('10', '1'));
2525
\PHPStan\Analyser\assertType('string', bcdiv('10', '-1'));
26+
\PHPStan\Analyser\assertType('string', bcdiv('10', '2', 0));
27+
\PHPStan\Analyser\assertType('string', bcdiv('10', '2', 1));
2628
\PHPStan\Analyser\assertType('string', bcdiv('10', $iNeg));
2729
\PHPStan\Analyser\assertType('string', bcdiv('10', $iPos));
2830
\PHPStan\Analyser\assertType('string', bcdiv($iPos, $iPos));
@@ -38,6 +40,8 @@
3840
\PHPStan\Analyser\assertType('null', bcmod($iPos, '0')); // Warning: Division by zero
3941
\PHPStan\Analyser\assertType('null', bcmod('10', $nonNumeric));
4042
\PHPStan\Analyser\assertType('string', bcmod('10', '1'));
43+
\PHPStan\Analyser\assertType('string', bcmod('10', '2', 0));
44+
\PHPStan\Analyser\assertType('string', bcmod('5.7', '1.3', 1));
4145
\PHPStan\Analyser\assertType('string', bcmod('10', 2.2));
4246
\PHPStan\Analyser\assertType('string', bcmod('10', $iUnknown));
4347
\PHPStan\Analyser\assertType('string', bcmod('10', '-1'));

0 commit comments

Comments
 (0)