Skip to content

Commit

Permalink
Use EvaledCodeSourceLocator
Browse files Browse the repository at this point in the history
  • Loading branch information
ondrejmirtes committed May 17, 2020
1 parent cf78035 commit ef44a9c
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 12 deletions.
15 changes: 15 additions & 0 deletions conf/config.neon
Expand Up @@ -1130,6 +1130,21 @@ services:
class: Roave\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber
arguments:
phpParser: @phpParserDecorator
autowired:
- Roave\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber

-
class: Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber
autowired:
- Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber

-
class: Roave\BetterReflection\SourceLocator\SourceStubber\AggregateSourceStubber
arguments:
- @Roave\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber
- @Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber
autowired:
- Roave\BetterReflection\SourceLocator\SourceStubber\SourceStubber

# Error formatters

Expand Down
Expand Up @@ -9,8 +9,10 @@
use PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorRepository;
use Roave\BetterReflection\Reflector\FunctionReflector;
use Roave\BetterReflection\SourceLocator\Ast\Locator;
use Roave\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber;
use Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber;
use Roave\BetterReflection\SourceLocator\SourceStubber\SourceStubber;
use Roave\BetterReflection\SourceLocator\Type\AggregateSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\EvaledCodeSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\MemoizingSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\PhpInternalSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\SourceLocator;
Expand All @@ -21,8 +23,11 @@ class BetterReflectionSourceLocatorFactory
/** @var \PhpParser\Parser */
private $parser;

/** @var PhpStormStubsSourceStubber */
private $phpStormStubsSourceStubber;
/** @var SourceStubber */
private $sourceStubber;

/** @var ReflectionSourceStubber */
private $reflectionSourceStubber;

/** @var \PHPStan\Reflection\BetterReflection\SourceLocator\OptimizedSingleFileSourceLocatorRepository */
private $optimizedSingleFileSourceLocatorRepository;
Expand Down Expand Up @@ -64,7 +69,8 @@ class BetterReflectionSourceLocatorFactory
*/
public function __construct(
\PhpParser\Parser $parser,
PhpStormStubsSourceStubber $phpStormStubsSourceStubber,
SourceStubber $sourceStubber,
ReflectionSourceStubber $reflectionSourceStubber,
OptimizedSingleFileSourceLocatorRepository $optimizedSingleFileSourceLocatorRepository,
OptimizedDirectorySourceLocatorRepository $optimizedDirectorySourceLocatorRepository,
ComposerJsonAndInstalledJsonSourceLocatorMaker $composerJsonAndInstalledJsonSourceLocatorMaker,
Expand All @@ -78,7 +84,8 @@ public function __construct(
)
{
$this->parser = $parser;
$this->phpStormStubsSourceStubber = $phpStormStubsSourceStubber;
$this->sourceStubber = $sourceStubber;
$this->reflectionSourceStubber = $reflectionSourceStubber;
$this->optimizedSingleFileSourceLocatorRepository = $optimizedSingleFileSourceLocatorRepository;
$this->optimizedDirectorySourceLocatorRepository = $optimizedDirectorySourceLocatorRepository;
$this->composerJsonAndInstalledJsonSourceLocatorMaker = $composerJsonAndInstalledJsonSourceLocatorMaker;
Expand Down Expand Up @@ -134,8 +141,9 @@ public function create(): SourceLocator
$astLocator = new Locator($this->parser, function (): FunctionReflector {
return $this->container->getService('betterReflectionFunctionReflector');
});
$locators[] = new PhpInternalSourceLocator($astLocator, $this->sourceStubber);
$locators[] = new EvaledCodeSourceLocator($astLocator, $this->reflectionSourceStubber);
$locators[] = new AutoloadSourceLocator($astLocator);
$locators[] = new PhpInternalSourceLocator($astLocator, $this->phpStormStubsSourceStubber);

return new MemoizingSourceLocator(new AggregateSourceLocator($locators));
}
Expand Down
11 changes: 10 additions & 1 deletion src/Testing/TestCase.php
Expand Up @@ -63,8 +63,11 @@
use Roave\BetterReflection\Reflector\ConstantReflector;
use Roave\BetterReflection\Reflector\FunctionReflector;
use Roave\BetterReflection\SourceLocator\Ast\Locator;
use Roave\BetterReflection\SourceLocator\SourceStubber\AggregateSourceStubber;
use Roave\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber;
use Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber;
use Roave\BetterReflection\SourceLocator\Type\AggregateSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\EvaledCodeSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\MemoizingSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\PhpInternalSourceLocator;

Expand Down Expand Up @@ -522,8 +525,14 @@ private static function getReflectors(): array
$astLocator = new Locator($phpParser, static function () use (&$functionReflector): FunctionReflector {
return $functionReflector;
});
$reflectionSourceStubber = new ReflectionSourceStubber();
$sourceStubber = new AggregateSourceStubber(
new PhpStormStubsSourceStubber($phpParser),
$reflectionSourceStubber
);
$locators[] = new PhpInternalSourceLocator($astLocator, $sourceStubber);
$locators[] = new EvaledCodeSourceLocator($astLocator, $reflectionSourceStubber);
$locators[] = new AutoloadSourceLocator($astLocator);
$locators[] = new PhpInternalSourceLocator($astLocator, new PhpStormStubsSourceStubber($phpParser));
$sourceLocator = new MemoizingSourceLocator(new AggregateSourceLocator($locators));

$classReflector = new MemoizingClassReflector($sourceLocator);
Expand Down
17 changes: 12 additions & 5 deletions src/Testing/TestCaseSourceLocatorFactory.php
Expand Up @@ -8,8 +8,10 @@
use PHPStan\Reflection\BetterReflection\SourceLocator\ComposerJsonAndInstalledJsonSourceLocatorMaker;
use Roave\BetterReflection\Reflector\FunctionReflector;
use Roave\BetterReflection\SourceLocator\Ast\Locator;
use Roave\BetterReflection\SourceLocator\SourceStubber\PhpStormStubsSourceStubber;
use Roave\BetterReflection\SourceLocator\SourceStubber\ReflectionSourceStubber;
use Roave\BetterReflection\SourceLocator\SourceStubber\SourceStubber;
use Roave\BetterReflection\SourceLocator\Type\AggregateSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\EvaledCodeSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\MemoizingSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\PhpInternalSourceLocator;
use Roave\BetterReflection\SourceLocator\Type\SourceLocator;
Expand All @@ -23,19 +25,23 @@ class TestCaseSourceLocatorFactory

private \PhpParser\Parser $phpParser;

private PhpStormStubsSourceStubber $phpStormStubsSourceStubber;
private SourceStubber $sourceStubber;

private ReflectionSourceStubber $reflectionSourceStubber;

public function __construct(
Container $container,
ComposerJsonAndInstalledJsonSourceLocatorMaker $composerJsonAndInstalledJsonSourceLocatorMaker,
\PhpParser\Parser $phpParser,
PhpStormStubsSourceStubber $phpStormStubsSourceStubber
SourceStubber $sourceStubber,
ReflectionSourceStubber $reflectionSourceStubber
)
{
$this->container = $container;
$this->composerJsonAndInstalledJsonSourceLocatorMaker = $composerJsonAndInstalledJsonSourceLocatorMaker;
$this->phpParser = $phpParser;
$this->phpStormStubsSourceStubber = $phpStormStubsSourceStubber;
$this->sourceStubber = $sourceStubber;
$this->reflectionSourceStubber = $reflectionSourceStubber;
}

public function create(): SourceLocator
Expand All @@ -62,8 +68,9 @@ public function create(): SourceLocator
return $this->container->getService('testCaseFunctionReflector');
});

$locators[] = new PhpInternalSourceLocator($astLocator, $this->sourceStubber);
$locators[] = new EvaledCodeSourceLocator($astLocator, $this->reflectionSourceStubber);
$locators[] = new AutoloadSourceLocator($astLocator);
$locators[] = new PhpInternalSourceLocator($astLocator, $this->phpStormStubsSourceStubber);

return new MemoizingSourceLocator(new AggregateSourceLocator($locators));
}
Expand Down

0 comments on commit ef44a9c

Please sign in to comment.