Skip to content

Commit b1eb301

Browse files
committed
compare class-strings to non-class-strings
1 parent be1cdc1 commit b1eb301

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

src/Type/ClassStringType.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,8 @@ public function looseCompare(Type $type, PhpVersion $phpVersion): BooleanType
5959
new ConstantBooleanType(false),
6060
]);
6161

62-
if ($looseFalse->isSuperTypeOf($type)->yes()) {
62+
if ($looseFalse->isSuperTypeOf($type)->yes()
63+
|| ($type->isString()->yes() && $type->isClassStringType()->no())) {
6364
return new ConstantBooleanType(false);
6465
}
6566

tests/PHPStan/Analyser/data/loose-comparisons.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1534,12 +1534,12 @@ public function looseIntersection(
15341534
assertType('bool', $classString == $zero);
15351535
assertType('bool', $classString == 10);
15361536
assertType('bool', $classString == $minusOne);
1537-
assertType('bool', $classString == $oneStr);
1537+
assertType('false', $classString == $oneStr);
15381538
assertType('false', $classString == $zeroStr);
1539-
assertType('bool', $classString == $minusOneStr);
1539+
assertType('false', $classString == $minusOneStr);
15401540
assertType('false', $classString == $null);
15411541
assertType('false', $classString == $emptyArr);
1542-
assertType('bool', $classString == $phpStr);
1542+
assertType('false', $classString == $phpStr);
15431543
assertType('false', $classString == $emptyStr);
15441544
assertType('bool', $classString == $float);
15451545
assertType('false', $classString == []);
@@ -1550,13 +1550,13 @@ public function looseIntersection(
15501550
assertType('bool', $classString == $string);
15511551
assertType('false', $classString == $obj);
15521552
assertType('false', $classString == new \stdClass());
1553-
assertType('bool', $classString == $unionMaybeNumeric);
1553+
assertType('false', $classString == $unionMaybeNumeric);
15541554
assertType('bool', $classString == $unionNumbers);
1555-
assertType('bool', $classString == $unionStrings);
1555+
assertType('false', $classString == $unionStrings);
15561556
assertType('bool', $classString == $unionMaybeArray);
15571557
assertType('bool', $classString == $nonEmptyString);
15581558
assertType('bool', $classString == $nonFalsyString);
1559-
assertType('bool', $classString == $numericString);
1559+
assertType('false', $classString == $numericString);
15601560

15611561
assertType('true', $nonEmptyArray == $true);
15621562
assertType('false', $nonEmptyArray == $false);

0 commit comments

Comments
 (0)