From 67cd31faa1fd8d67558d77b7147b8819d7c7a93b Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Sun, 31 May 2020 14:03:19 +0200 Subject: [PATCH] Future-proof ScopeFactory --- .../node-type-resolver/config/config.yaml | 9 --- .../src/PHPStan/Scope/ScopeFactory.php | 58 +------------------ 2 files changed, 3 insertions(+), 64 deletions(-) diff --git a/packages/node-type-resolver/config/config.yaml b/packages/node-type-resolver/config/config.yaml index 97fddd50981b..e5c18f51efd2 100644 --- a/packages/node-type-resolver/config/config.yaml +++ b/packages/node-type-resolver/config/config.yaml @@ -23,17 +23,8 @@ services: PHPStan\Analyser\NodeScopeResolver: factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createNodeScopeResolver'] - PHPStan\Analyser\TypeSpecifier: - factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createTypeSpecifier'] - PHPStan\Analyser\ScopeFactory: factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createScopeFactory'] - PHPStan\DependencyInjection\Type\DynamicReturnTypeExtensionRegistryProvider: - factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createDynamicReturnTypeExtensionRegistryProvider'] - - PHPStan\DependencyInjection\Type\OperatorTypeSpecifyingExtensionRegistryProvider: - factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createOperatorTypeSpecifyingExtensionRegistryProvider'] - PHPStan\PhpDoc\TypeNodeResolver: factory: ['@Rector\NodeTypeResolver\DependencyInjection\PHPStanServicesFactory', 'createTypeNodeResolver'] diff --git a/packages/node-type-resolver/src/PHPStan/Scope/ScopeFactory.php b/packages/node-type-resolver/src/PHPStan/Scope/ScopeFactory.php index ffe8d3a6f5a2..cf13f067d4fb 100644 --- a/packages/node-type-resolver/src/PHPStan/Scope/ScopeFactory.php +++ b/packages/node-type-resolver/src/PHPStan/Scope/ScopeFactory.php @@ -4,77 +4,25 @@ namespace Rector\NodeTypeResolver\PHPStan\Scope; -use PHPStan\Analyser\MutatingScope; use PHPStan\Analyser\Scope; use PHPStan\Analyser\ScopeContext; use PHPStan\Analyser\ScopeFactory as PHPStanScopeFactory; -use PHPStan\Analyser\TypeSpecifier; -use PHPStan\DependencyInjection\Type\DynamicReturnTypeExtensionRegistryProvider; -use PHPStan\DependencyInjection\Type\OperatorTypeSpecifyingExtensionRegistryProvider; -use PHPStan\Reflection\ReflectionProvider; -use PHPStan\Rules\Properties\PropertyReflectionFinder; -use Rector\Core\PhpParser\Printer\BetterStandardPrinter; use Symplify\SmartFileSystem\SmartFileInfo; final class ScopeFactory { - /** - * @var ReflectionProvider - */ - private $reflectionProvider; - - /** - * @var TypeSpecifier - */ - private $typeSpecifier; - /** * @var PHPStanScopeFactory */ private $phpStanScopeFactory; - /** - * @var BetterStandardPrinter - */ - private $betterStandardPrinter; - - /** - * @var DynamicReturnTypeExtensionRegistryProvider - */ - private $dynamicReturnTypeExtensionRegistryProvider; - - /** - * @var OperatorTypeSpecifyingExtensionRegistryProvider - */ - private $operatorTypeSpecifyingExtensionRegistryProvider; - - public function __construct( - ReflectionProvider $reflectionProvider, - TypeSpecifier $typeSpecifier, - PHPStanScopeFactory $phpStanScopeFactory, - BetterStandardPrinter $betterStandardPrinter, - DynamicReturnTypeExtensionRegistryProvider $dynamicReturnTypeExtensionRegistryProvider, - OperatorTypeSpecifyingExtensionRegistryProvider $operatorTypeSpecifyingExtensionRegistryProvider - ) { - $this->reflectionProvider = $reflectionProvider; - $this->typeSpecifier = $typeSpecifier; + public function __construct(PHPStanScopeFactory $phpStanScopeFactory) + { $this->phpStanScopeFactory = $phpStanScopeFactory; - $this->betterStandardPrinter = $betterStandardPrinter; - $this->dynamicReturnTypeExtensionRegistryProvider = $dynamicReturnTypeExtensionRegistryProvider; - $this->operatorTypeSpecifyingExtensionRegistryProvider = $operatorTypeSpecifyingExtensionRegistryProvider; } public function createFromFile(SmartFileInfo $fileInfo): Scope { - return new MutatingScope( - $this->phpStanScopeFactory, - $this->reflectionProvider, - $this->dynamicReturnTypeExtensionRegistryProvider->getRegistry(), - $this->operatorTypeSpecifyingExtensionRegistryProvider->getRegistry(), - $this->betterStandardPrinter, - $this->typeSpecifier, - new PropertyReflectionFinder(), - ScopeContext::create($fileInfo->getRealPath()) - ); + return $this->phpStanScopeFactory->create(ScopeContext::create($fileInfo->getRealPath())); } }