Skip to content

Commit 7ed2b07

Browse files
committed
Fix TestCaseSourceLocatorFactory
1 parent a146678 commit 7ed2b07

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

src/Testing/TestCaseSourceLocatorFactory.php

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,14 @@
1616
use PHPStan\Reflection\BetterReflection\SourceLocator\AutoloadSourceLocator;
1717
use PHPStan\Reflection\BetterReflection\SourceLocator\ComposerJsonAndInstalledJsonSourceLocatorMaker;
1818
use PHPStan\Reflection\BetterReflection\SourceLocator\FileNodesFetcher;
19+
use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorRepository;
1920
use PHPStan\Reflection\BetterReflection\SourceLocator\PhpVersionBlacklistSourceLocator;
2021
use ReflectionClass;
2122
use function dirname;
2223
use function is_file;
2324
use function serialize;
2425
use function sha1;
26+
use const PHP_VERSION_ID;
2527

2628
final class TestCaseSourceLocatorFactory
2729
{
@@ -35,6 +37,7 @@ final class TestCaseSourceLocatorFactory
3537
*/
3638
public function __construct(
3739
private ComposerJsonAndInstalledJsonSourceLocatorMaker $composerJsonAndInstalledJsonSourceLocatorMaker,
40+
private OptimizedSingleFileSourceLocatorRepository $optimizedSingleFileSourceLocatorRepository,
3841
private Parser $phpParser,
3942
private Parser $php8Parser,
4043
private FileNodesFetcher $fileNodesFetcher,
@@ -57,7 +60,13 @@ public function create(): SourceLocator
5760
$this->excludePaths,
5861
]));
5962
if ($classLoaderReflection->hasProperty('vendorDir') && ! isset(self::$composerSourceLocatorsCache[$cacheKey])) {
60-
$composerLocators = [];
63+
$composerLocators = [
64+
$this->optimizedSingleFileSourceLocatorRepository->getOrCreate(
65+
PHP_VERSION_ID < 80500
66+
? __DIR__ . '/../../stubs/runtime/Attribute84.php'
67+
: __DIR__ . '/../../stubs/runtime/Attribute85.php',
68+
),
69+
];
6170
$vendorDirProperty = $classLoaderReflection->getProperty('vendorDir');
6271
$vendorDirProperty->setAccessible(true);
6372
foreach ($classLoaders as $classLoader) {

0 commit comments

Comments
 (0)