From a54667e27e25f9d0d3d95ce6e3fe611b1ee565fd Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Tue, 29 Apr 2025 18:58:48 +0200 Subject: [PATCH] non-falsy-string cannot be false --- src/Type/Accessory/AccessoryNonFalsyStringType.php | 5 +++++ tests/PHPStan/Analyser/nsrt/non-falsy-string.php | 1 + 2 files changed, 6 insertions(+) diff --git a/src/Type/Accessory/AccessoryNonFalsyStringType.php b/src/Type/Accessory/AccessoryNonFalsyStringType.php index 90e7c1f64d..7e24c87654 100644 --- a/src/Type/Accessory/AccessoryNonFalsyStringType.php +++ b/src/Type/Accessory/AccessoryNonFalsyStringType.php @@ -187,6 +187,11 @@ public function toInteger(): Type return TypeCombinator::remove(new IntegerType(), new ConstantIntegerType(0)); } + public function toBoolean(): BooleanType + { + return new ConstantBooleanType(true); + } + public function toFloat(): Type { return new FloatType(); diff --git a/tests/PHPStan/Analyser/nsrt/non-falsy-string.php b/tests/PHPStan/Analyser/nsrt/non-falsy-string.php index 5e7e05f229..5be26b6b1b 100644 --- a/tests/PHPStan/Analyser/nsrt/non-falsy-string.php +++ b/tests/PHPStan/Analyser/nsrt/non-falsy-string.php @@ -12,6 +12,7 @@ class Foo { */ public function bar($nonFalseyString, $truthyString) { assertType('int|int<1, max>', (int) $nonFalseyString); + assertType('true', (bool) $nonFalseyString); // truthy-string is an alias for non-falsy-string assertType('non-falsy-string', $truthyString); }