diff --git a/src/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php b/src/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php index 131b056be7..ad150c3a59 100644 --- a/src/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php +++ b/src/Reflection/BetterReflection/BetterReflectionSourceLocatorFactory.php @@ -18,6 +18,7 @@ use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedDirectorySourceLocatorRepository; use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorRepository; use PHPStan\Reflection\BetterReflection\SourceLocator\PhpVersionBlacklistSourceLocator; +use PHPStan\Reflection\BetterReflection\SourceLocator\RectorAutoloadSourceLocator; use PHPStan\Reflection\BetterReflection\SourceLocator\SkipClassAliasSourceLocator; use function array_merge; use function array_unique; @@ -108,6 +109,7 @@ public function create(): SourceLocator if (!$this->disableRuntimeReflectionProvider) { $locators[] = new ClassWhitelistSourceLocator($this->autoloadSourceLocator, $this->staticReflectionClassNamePatterns); } else { + $locators[] = new RectorAutoloadSourceLocator(); $locators[] = $this->autoloadSourceLocator; } $locators[] = new PhpVersionBlacklistSourceLocator(new PhpInternalSourceLocator($astLocator, $this->reflectionSourceStubber), $this->phpstormStubsSourceStubber); diff --git a/src/Reflection/BetterReflection/SourceLocator/RectorAutoloadSourceLocator.php b/src/Reflection/BetterReflection/SourceLocator/RectorAutoloadSourceLocator.php new file mode 100644 index 0000000000..442b3d6904 --- /dev/null +++ b/src/Reflection/BetterReflection/SourceLocator/RectorAutoloadSourceLocator.php @@ -0,0 +1,38 @@ +isClass()) { + return null; + } + + $className = strtolower($identifier->getName()); + if (strpos($className, 'rectorprefix') === 0 || strpos($className, 'rector\\') === 0) { + class_exists($identifier->getName()) || interface_exists($identifier->getName()) || trait_exists($identifier->getName()); + } + + return null; + } + + public function locateIdentifiersByType(Reflector $reflector, IdentifierType $identifierType): array + { + return []; + } + +}