Skip to content

Commit 747d943

Browse files
Add non regression tests
1 parent 0711bec commit 747d943

File tree

3 files changed

+60
-0
lines changed

3 files changed

+60
-0
lines changed

Diff for: tests/PHPStan/Rules/Comparison/ImpossibleCheckTypeFunctionCallRuleTest.php

+14
Original file line numberDiff line numberDiff line change
@@ -1109,4 +1109,18 @@ public function testBug3979(): void
11091109
$this->analyse([__DIR__ . '/data/bug-3979.php'], []);
11101110
}
11111111

1112+
public function testBug8464(): void
1113+
{
1114+
$this->checkAlwaysTrueCheckTypeFunctionCall = true;
1115+
$this->treatPhpDocTypesAsCertain = true;
1116+
$this->analyse([__DIR__ . '/data/bug-8464.php'], []);
1117+
}
1118+
1119+
public function testBug8954(): void
1120+
{
1121+
$this->checkAlwaysTrueCheckTypeFunctionCall = true;
1122+
$this->treatPhpDocTypesAsCertain = true;
1123+
$this->analyse([__DIR__ . '/data/bug-8954.php'], []);
1124+
}
1125+
11121126
}

Diff for: tests/PHPStan/Rules/Comparison/data/bug-8464.php

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php // lint >= 8.0
2+
3+
namespace Bug8464;
4+
5+
final class ObjectUtil
6+
{
7+
/**
8+
* @param class-string $type
9+
*/
10+
public static function instanceOf(mixed $object, string $type): bool
11+
{
12+
return \is_object($object)
13+
&& (
14+
$object::class === $type ||
15+
is_subclass_of($object, $type)
16+
);
17+
}
18+
}

Diff for: tests/PHPStan/Rules/Comparison/data/bug-8954.php

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<?php declare(strict_types = 1);
2+
3+
namespace Bug8954;
4+
5+
/**
6+
* @template U
7+
* @template V
8+
*
9+
* @param ?class-string<U> $class
10+
* @param class-string<V> $expected
11+
*
12+
* @return ?class-string<V>
13+
*/
14+
function ensureSubclassOf(?string $class, string $expected): ?string {
15+
if ($class === null) {
16+
return $class;
17+
}
18+
19+
if (!class_exists($class)) {
20+
throw new \Exception("Class “{$class}” does not exist.");
21+
}
22+
23+
if (!is_subclass_of($class, $expected)) {
24+
throw new \Exception("Class “{$class}” is not a subclass of “{$expected}”.");
25+
}
26+
27+
return $class;
28+
}

0 commit comments

Comments
 (0)