mirror of
https://github.com/rectorphp/rector.git
synced 2025-02-25 12:14:02 +01:00
Merge pull request #2657 from Lctrs/reflection-provider
Migrate from PHPStan's Broker to ReflectionProvider
This commit is contained in:
commit
16b16d847b
@ -16,8 +16,8 @@ services:
|
||||
Rector\PhpParser\Node\BetterNodeFinder: null
|
||||
|
||||
# PHPStan
|
||||
PHPStan\Broker\Broker:
|
||||
factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createBroker']
|
||||
PHPStan\Reflection\ReflectionProvider:
|
||||
factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createReflectionProvider']
|
||||
|
||||
PHPStan\Analyser\NodeScopeResolver:
|
||||
factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createNodeScopeResolver']
|
||||
|
@ -9,11 +9,11 @@ use Nette\Utils\Strings;
|
||||
use PHPStan\Analyser\NodeScopeResolver;
|
||||
use PHPStan\Analyser\ScopeFactory;
|
||||
use PHPStan\Analyser\TypeSpecifier;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\DependencyInjection\Container;
|
||||
use PHPStan\DependencyInjection\ContainerFactory;
|
||||
use PHPStan\DependencyInjection\Type\DynamicReturnTypeExtensionRegistryProvider;
|
||||
use PHPStan\DependencyInjection\Type\OperatorTypeSpecifyingExtensionRegistryProvider;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
|
||||
final class PHPStanServicesFactory
|
||||
{
|
||||
@ -72,9 +72,9 @@ final class PHPStanServicesFactory
|
||||
}
|
||||
}
|
||||
|
||||
public function createBroker(): Broker
|
||||
public function createReflectionProvider(): ReflectionProvider
|
||||
{
|
||||
return $this->container->getByType(Broker::class);
|
||||
return $this->container->getByType(ReflectionProvider::class);
|
||||
}
|
||||
|
||||
public function createNodeScopeResolver(): NodeScopeResolver
|
||||
|
@ -35,8 +35,8 @@ use PhpParser\Node\Stmt\PropertyProperty;
|
||||
use PhpParser\Node\Stmt\Trait_;
|
||||
use PhpParser\NodeTraverser;
|
||||
use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\PhpDocParser\Ast\Type\TypeNode;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
use PHPStan\Type\Accessory\HasOffsetType;
|
||||
use PHPStan\Type\Accessory\NonEmptyArrayType;
|
||||
use PHPStan\Type\ArrayType;
|
||||
@ -101,9 +101,9 @@ final class NodeTypeResolver
|
||||
private $classReflectionTypesResolver;
|
||||
|
||||
/**
|
||||
* @var Broker
|
||||
* @var ReflectionProvider
|
||||
*/
|
||||
private $broker;
|
||||
private $reflectionProvider;
|
||||
|
||||
/**
|
||||
* @var TypeFactory
|
||||
@ -145,7 +145,7 @@ final class NodeTypeResolver
|
||||
ParsedNodesByType $parsedNodesByType,
|
||||
CallableNodeTraverser $callableNodeTraverser,
|
||||
ClassReflectionTypesResolver $classReflectionTypesResolver,
|
||||
Broker $broker,
|
||||
ReflectionProvider $reflectionProvider,
|
||||
TypeFactory $typeFactory,
|
||||
StaticTypeMapper $staticTypeMapper,
|
||||
ObjectTypeSpecifier $objectTypeSpecifier,
|
||||
@ -161,7 +161,7 @@ final class NodeTypeResolver
|
||||
|
||||
$this->callableNodeTraverser = $callableNodeTraverser;
|
||||
$this->classReflectionTypesResolver = $classReflectionTypesResolver;
|
||||
$this->broker = $broker;
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
$this->typeFactory = $typeFactory;
|
||||
$this->objectTypeSpecifier = $objectTypeSpecifier;
|
||||
$this->betterNodeFinder = $betterNodeFinder;
|
||||
@ -811,7 +811,7 @@ final class NodeTypeResolver
|
||||
*/
|
||||
private function getClassLikeTypesByClassName(string $className): array
|
||||
{
|
||||
$classReflection = $this->broker->getClass($className);
|
||||
$classReflection = $this->reflectionProvider->getClass($className);
|
||||
|
||||
$classLikeTypes = $this->classReflectionTypesResolver->resolve($classReflection);
|
||||
|
||||
|
@ -13,8 +13,8 @@ use PhpParser\NodeTraverser;
|
||||
use PHPStan\Analyser\MutatingScope;
|
||||
use PHPStan\Analyser\NodeScopeResolver as PHPStanNodeScopeResolver;
|
||||
use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\Node\UnreachableStatementNode;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
use Rector\Exception\ShouldNotHappenException;
|
||||
use Rector\NodeTypeResolver\Node\AttributeKey;
|
||||
use Rector\NodeTypeResolver\PHPStan\Collector\TraitNodeScopeCollector;
|
||||
@ -37,9 +37,9 @@ final class NodeScopeResolver
|
||||
private $scopeFactory;
|
||||
|
||||
/**
|
||||
* @var Broker
|
||||
* @var ReflectionProvider
|
||||
*/
|
||||
private $broker;
|
||||
private $reflectionProvider;
|
||||
|
||||
/**
|
||||
* @var RemoveDeepChainMethodCallNodeVisitor
|
||||
@ -54,13 +54,13 @@ final class NodeScopeResolver
|
||||
public function __construct(
|
||||
ScopeFactory $scopeFactory,
|
||||
PHPStanNodeScopeResolver $phpStanNodeScopeResolver,
|
||||
Broker $broker,
|
||||
ReflectionProvider $reflectionProvider,
|
||||
RemoveDeepChainMethodCallNodeVisitor $removeDeepChainMethodCallNodeVisitor,
|
||||
TraitNodeScopeCollector $traitNodeScopeCollector
|
||||
) {
|
||||
$this->scopeFactory = $scopeFactory;
|
||||
$this->phpStanNodeScopeResolver = $phpStanNodeScopeResolver;
|
||||
$this->broker = $broker;
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
$this->removeDeepChainMethodCallNodeVisitor = $removeDeepChainMethodCallNodeVisitor;
|
||||
$this->traitNodeScopeCollector = $traitNodeScopeCollector;
|
||||
}
|
||||
@ -123,7 +123,7 @@ final class NodeScopeResolver
|
||||
private function resolveClassOrInterfaceScope(Node $classOrInterfaceNode, MutatingScope $scope): MutatingScope
|
||||
{
|
||||
$className = $this->resolveClassName($classOrInterfaceNode);
|
||||
$classReflection = $this->broker->getClass($className);
|
||||
$classReflection = $this->reflectionProvider->getClass($className);
|
||||
|
||||
return $scope->enterClass($classReflection);
|
||||
}
|
||||
|
@ -9,18 +9,18 @@ use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Analyser\ScopeContext;
|
||||
use PHPStan\Analyser\ScopeFactory as PHPStanScopeFactory;
|
||||
use PHPStan\Analyser\TypeSpecifier;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\DependencyInjection\Type\DynamicReturnTypeExtensionRegistryProvider;
|
||||
use PHPStan\DependencyInjection\Type\OperatorTypeSpecifyingExtensionRegistryProvider;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
use PHPStan\Rules\Properties\PropertyReflectionFinder;
|
||||
use Rector\PhpParser\Printer\BetterStandardPrinter;
|
||||
|
||||
final class ScopeFactory
|
||||
{
|
||||
/**
|
||||
* @var Broker
|
||||
* @var ReflectionProvider
|
||||
*/
|
||||
private $broker;
|
||||
private $reflectionProvider;
|
||||
|
||||
/**
|
||||
* @var TypeSpecifier
|
||||
@ -48,14 +48,14 @@ final class ScopeFactory
|
||||
private $operatorTypeSpecifyingExtensionRegistryProvider;
|
||||
|
||||
public function __construct(
|
||||
Broker $broker,
|
||||
ReflectionProvider $reflectionProvider,
|
||||
TypeSpecifier $typeSpecifier,
|
||||
PHPStanScopeFactory $phpStanScopeFactory,
|
||||
BetterStandardPrinter $betterStandardPrinter,
|
||||
DynamicReturnTypeExtensionRegistryProvider $dynamicReturnTypeExtensionRegistryProvider,
|
||||
OperatorTypeSpecifyingExtensionRegistryProvider $operatorTypeSpecifyingExtensionRegistryProvider
|
||||
) {
|
||||
$this->broker = $broker;
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
$this->typeSpecifier = $typeSpecifier;
|
||||
$this->phpStanScopeFactory = $phpStanScopeFactory;
|
||||
$this->betterStandardPrinter = $betterStandardPrinter;
|
||||
@ -67,7 +67,7 @@ final class ScopeFactory
|
||||
{
|
||||
return new MutatingScope(
|
||||
$this->phpStanScopeFactory,
|
||||
$this->broker,
|
||||
$this->reflectionProvider,
|
||||
$this->dynamicReturnTypeExtensionRegistryProvider->getRegistry(),
|
||||
$this->operatorTypeSpecifyingExtensionRegistryProvider->getRegistry(),
|
||||
$this->betterStandardPrinter,
|
||||
|
@ -4,19 +4,19 @@ declare(strict_types=1);
|
||||
|
||||
namespace Rector\NodeTypeResolver\Reflection;
|
||||
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\Reflection\ClassReflection;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
|
||||
final class ClassReflectionTypesResolver
|
||||
{
|
||||
/**
|
||||
* @var Broker
|
||||
* @var ReflectionProvider
|
||||
*/
|
||||
private $broker;
|
||||
private $reflectionProvider;
|
||||
|
||||
public function __construct(Broker $broker)
|
||||
public function __construct(ReflectionProvider $reflectionProvider)
|
||||
{
|
||||
$this->broker = $broker;
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,7 +48,7 @@ final class ClassReflectionTypesResolver
|
||||
|
||||
// to cover traits of parent classes
|
||||
foreach ($classReflection->getParentClassesNames() as $parentClassName) {
|
||||
$parentClassReflection = $this->broker->getClass($parentClassName);
|
||||
$parentClassReflection = $this->reflectionProvider->getClass($parentClassName);
|
||||
|
||||
foreach ($parentClassReflection->getTraits() as $parentClassTrait) {
|
||||
$types[] = $parentClassTrait->getName();
|
||||
|
@ -12,20 +12,20 @@ use PhpParser\Node\Expr\MethodCall;
|
||||
use PhpParser\Node\Expr\StaticCall;
|
||||
use PhpParser\Node\Name;
|
||||
use PHPStan\Analyser\Scope;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\Broker\FunctionNotFoundException;
|
||||
use PHPStan\Reflection\ParameterReflection;
|
||||
use PHPStan\Reflection\ParametersAcceptor;
|
||||
use PHPStan\Reflection\ParametersAcceptorSelector;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
use Rector\NodeTypeResolver\NodeTypeResolver;
|
||||
use Rector\PhpParser\Node\Resolver\NameResolver;
|
||||
|
||||
final class CallReflection
|
||||
{
|
||||
/**
|
||||
* @var Broker
|
||||
* @var ReflectionProvider
|
||||
*/
|
||||
private $broker;
|
||||
private $reflectionProvider;
|
||||
|
||||
/**
|
||||
* @var NodeTypeResolver
|
||||
@ -37,9 +37,12 @@ final class CallReflection
|
||||
*/
|
||||
private $nameResolver;
|
||||
|
||||
public function __construct(Broker $broker, NodeTypeResolver $nodeTypeResolver, NameResolver $nameResolver)
|
||||
{
|
||||
$this->broker = $broker;
|
||||
public function __construct(
|
||||
ReflectionProvider $reflectionProvider,
|
||||
NodeTypeResolver $nodeTypeResolver,
|
||||
NameResolver $nameResolver
|
||||
) {
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
$this->nodeTypeResolver = $nodeTypeResolver;
|
||||
$this->nameResolver = $nameResolver;
|
||||
}
|
||||
@ -98,7 +101,7 @@ final class CallReflection
|
||||
return ParametersAcceptorSelector::selectFromArgs(
|
||||
$scope,
|
||||
$args,
|
||||
$this->broker->getFunction($name, $scope)->getVariants()
|
||||
$this->reflectionProvider->getFunction($name, $scope)->getVariants()
|
||||
)->getParameters();
|
||||
} catch (FunctionNotFoundException $functionNotFoundException) {
|
||||
return [];
|
||||
|
@ -15,7 +15,7 @@ use PhpParser\Node\Param;
|
||||
use PhpParser\Node\Stmt\Class_;
|
||||
use PhpParser\Node\Stmt\ClassMethod;
|
||||
use PhpParser\NodeTraverser;
|
||||
use PHPStan\Broker\Broker;
|
||||
use PHPStan\Reflection\ReflectionProvider;
|
||||
use PHPStan\Type\ErrorType;
|
||||
use PHPStan\Type\MixedType;
|
||||
use PHPStan\Type\ObjectType;
|
||||
@ -38,9 +38,9 @@ final class PropertyFetchManipulator
|
||||
private $nodeTypeResolver;
|
||||
|
||||
/**
|
||||
* @var Broker
|
||||
* @var ReflectionProvider
|
||||
*/
|
||||
private $broker;
|
||||
private $reflectionProvider;
|
||||
|
||||
/**
|
||||
* @var NameResolver
|
||||
@ -59,12 +59,12 @@ final class PropertyFetchManipulator
|
||||
|
||||
public function __construct(
|
||||
NodeTypeResolver $nodeTypeResolver,
|
||||
Broker $broker,
|
||||
ReflectionProvider $reflectionProvider,
|
||||
NameResolver $nameResolver,
|
||||
CallableNodeTraverser $callableNodeTraverser
|
||||
) {
|
||||
$this->nodeTypeResolver = $nodeTypeResolver;
|
||||
$this->broker = $broker;
|
||||
$this->reflectionProvider = $reflectionProvider;
|
||||
$this->nameResolver = $nameResolver;
|
||||
$this->callableNodeTraverser = $callableNodeTraverser;
|
||||
}
|
||||
@ -345,11 +345,11 @@ final class PropertyFetchManipulator
|
||||
return false;
|
||||
}
|
||||
|
||||
if (! $this->broker->hasClass($propertyFetchType)) {
|
||||
if (! $this->reflectionProvider->hasClass($propertyFetchType)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$classReflection = $this->broker->getClass($propertyFetchType);
|
||||
$classReflection = $this->reflectionProvider->getClass($propertyFetchType);
|
||||
if (! $classReflection->hasProperty($propertyName)) {
|
||||
return false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user