Skip to content

Commit d004c23

Browse files
committed
Stub validator - PHPStan classes are known without extra stubs
1 parent 992db25 commit d004c23

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

src/PhpDoc/StubSourceLocatorFactory.php

+10
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@
66
use PHPStan\BetterReflection\SourceLocator\Ast\Locator;
77
use PHPStan\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber;
88
use PHPStan\BetterReflection\SourceLocator\Type\AggregateSourceLocator;
9+
use PHPStan\BetterReflection\SourceLocator\Type\Composer\Psr\Psr4Mapping;
910
use PHPStan\BetterReflection\SourceLocator\Type\MemoizingSourceLocator;
1011
use PHPStan\BetterReflection\SourceLocator\Type\PhpInternalSourceLocator;
1112
use PHPStan\BetterReflection\SourceLocator\Type\SourceLocator;
13+
use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedPsrAutoloaderLocatorFactory;
1214
use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorRepository;
15+
use function dirname;
1316

1417
class StubSourceLocatorFactory
1518
{
@@ -18,6 +21,7 @@ public function __construct(
1821
private Parser $php8Parser,
1922
private PhpStormStubsSourceStubber $phpStormStubsSourceStubber,
2023
private OptimizedSingleFileSourceLocatorRepository $optimizedSingleFileSourceLocatorRepository,
24+
private OptimizedPsrAutoloaderLocatorFactory $optimizedPsrAutoloaderLocatorFactory,
2125
private StubFilesProvider $stubFilesProvider,
2226
)
2327
{
@@ -31,6 +35,12 @@ public function create(): SourceLocator
3135
$locators[] = $this->optimizedSingleFileSourceLocatorRepository->getOrCreate($stubFile);
3236
}
3337

38+
$locators[] = $this->optimizedPsrAutoloaderLocatorFactory->create(
39+
Psr4Mapping::fromArrayMappings([
40+
'PHPStan\\' => [dirname(__DIR__) . '/'],
41+
]),
42+
);
43+
3444
$locators[] = new PhpInternalSourceLocator($astPhp8Locator, $this->phpStormStubsSourceStubber);
3545

3646
return new MemoizingSourceLocator(new AggregateSourceLocator($locators));

0 commit comments

Comments
 (0)