Skip to content

Commit 8ac2637

Browse files
drewmtondrejmirtes
authored andcommitted
Isolate enum regression from older runtime polyfills
1 parent 2c2f9a2 commit 8ac2637

1 file changed

Lines changed: 10 additions & 1 deletion

File tree

‎tests/PHPStan/Reflection/InitializerExprTypeResolverTest.php‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
use PhpParser\Node\Name\FullyQualified;
88
use PhpParser\Node\Scalar\LNumber;
99
use PhpParser\Node\Scalar\String_;
10+
use PhpParser\ParserFactory;
1011
use PHPStan\Analyser\ConstantResolver;
1112
use PHPStan\BetterReflection\Reflection\Adapter\ReflectionClass;
13+
use PHPStan\BetterReflection\Reflector\DefaultReflector;
14+
use PHPStan\BetterReflection\SourceLocator\Ast\Locator;
15+
use PHPStan\BetterReflection\SourceLocator\Type\StringSourceLocator;
1216
use PHPStan\Php\PhpVersion;
1317
use PHPStan\Reflection\ReflectionProvider\DirectReflectionProviderProvider;
1418
use PHPStan\ShouldNotHappenException;
@@ -28,9 +32,14 @@ class InitializerExprTypeResolverTest extends PHPStanTestCase
2832
public function testUnitEnumDefaultWithClassAdapter(): void
2933
{
3034
$container = self::getContainer();
35+
// Do not resolve the runtime's RoundingMode polyfill on older PHP versions.
36+
$reflector = new DefaultReflector(new StringSourceLocator(
37+
'<?php enum RoundingMode { case HalfAwayFromZero; }',
38+
new Locator((new ParserFactory())->createForNewestSupportedVersion()),
39+
));
3140
$classReflection = $container->getByType(ClassReflectionFactory::class)->create(
3241
'RoundingMode',
33-
new ReflectionClass(self::getReflector()->reflectClass('RoundingMode')),
42+
new ReflectionClass($reflector->reflectClass('RoundingMode')),
3443
null,
3544
null,
3645
null,

0 commit comments

Comments
 (0)