From 9d1b822c5449dfd1267fc84af208e6ca75cbd54d Mon Sep 17 00:00:00 2001 From: Vincent Langlet Date: Tue, 2 Sep 2025 16:49:59 +0200 Subject: [PATCH] Fix ConstantFloatType::toString --- src/Type/Constant/ConstantFloatType.php | 8 +++++ tests/PHPStan/Analyser/nsrt/bug-12225.php | 44 +++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 tests/PHPStan/Analyser/nsrt/bug-12225.php diff --git a/src/Type/Constant/ConstantFloatType.php b/src/Type/Constant/ConstantFloatType.php index 0ac763af76..eb44693d80 100644 --- a/src/Type/Constant/ConstantFloatType.php +++ b/src/Type/Constant/ConstantFloatType.php @@ -11,6 +11,7 @@ use PHPStan\Type\Traits\ConstantNumericComparisonTypeTrait; use PHPStan\Type\Traits\ConstantScalarTypeTrait; use PHPStan\Type\Type; +use PHPStan\Type\UnionType; use PHPStan\Type\VerbosityLevel; use function abs; use function ini_get; @@ -69,6 +70,13 @@ public function describe(VerbosityLevel $level): string public function toString(): Type { + if ($this->value === 0.0) { + return new UnionType([ + new ConstantStringType('0'), + new ConstantStringType('-0'), + ]); + } + return new ConstantStringType((string) $this->value); } diff --git a/tests/PHPStan/Analyser/nsrt/bug-12225.php b/tests/PHPStan/Analyser/nsrt/bug-12225.php new file mode 100644 index 0000000000..83647d0bff --- /dev/null +++ b/tests/PHPStan/Analyser/nsrt/bug-12225.php @@ -0,0 +1,44 @@ +