diff --git a/src/Analyser/TypeSpecifier.php b/src/Analyser/TypeSpecifier.php index 2fa2a7017d..9652ad660a 100644 --- a/src/Analyser/TypeSpecifier.php +++ b/src/Analyser/TypeSpecifier.php @@ -269,8 +269,8 @@ public function specifyTypesInCondition( && $leftType->isInteger()->yes() ) { if ( - $context->truthy() && (IntegerRangeType::createAllGreaterThanOrEqualTo(1 - $offset)->isSuperTypeOf($leftType)->yes()) - || ($context->falsey() && (new ConstantIntegerType(1 - $offset))->isSuperTypeOf($leftType)->yes()) + $context->true() && (IntegerRangeType::createAllGreaterThanOrEqualTo(1 - $offset)->isSuperTypeOf($leftType)->yes()) + || ($context->false() && (new ConstantIntegerType(1 - $offset))->isSuperTypeOf($leftType)->yes()) ) { $argType = $scope->getType($expr->right->getArgs()[0]->value); if ($argType->isString()->yes()) { diff --git a/tests/PHPStan/Analyser/data/bug-10952c.php b/tests/PHPStan/Analyser/data/bug-10952c.php new file mode 100644 index 0000000000..87d28e3827 --- /dev/null +++ b/tests/PHPStan/Analyser/data/bug-10952c.php @@ -0,0 +1,30 @@ +getString(); + + if ((strlen($string) > 1) === true) { + assertType('non-empty-string', $string); + } else { + assertType("string", $string); + } + + match (true) { + (strlen($string) > 1) => assertType('non-empty-string', $string), + default => assertType("string", $string), + }; + + } +}