From ad743484510a5cf4b7a0550820f4ecc8dc788653 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Fri, 9 Jun 2023 10:52:53 +0000 Subject: [PATCH] Updated Rector to commit 390730a9c40cfad8ca6a089e2dee1b7e158e076e https://github.com/rectorphp/rector-src/commit/390730a9c40cfad8ca6a089e2dee1b7e158e076e Remove propperty to add collector, add them directly or as a constructor dependency (#4131) --- .../Application/PostFileProcessor.php | 4 - .../Collector/PropertyToAddCollector.php | 46 --------- .../Rector/PropertyAddingPostRector.php | 80 ---------------- .../ValueObject/PropertyMetadata.php | 5 +- .../CompleteDynamicPropertiesRector.php | 2 +- ...FuncCallStaticCallToMethodCallAnalyzer.php | 13 ++- .../StaticCallToMethodCallRector.php | 61 ++++++------ src/Application/VersionResolver.php | 4 +- src/Kernel/RectorKernel.php | 2 +- vendor/autoload.php | 2 +- vendor/composer/autoload_classmap.php | 2 - vendor/composer/autoload_real.php | 10 +- vendor/composer/autoload_static.php | 10 +- vendor/composer/installed.json | 16 ++-- vendor/composer/installed.php | 2 +- .../src/GeneratedConfig.php | 2 +- ...ceEntityRepositoryParentCallToDIRector.php | 16 +--- ...epositoryFromParentToConstructorRector.php | 12 +-- ...ositoryCallsByRepositoryPropertyRector.php | 93 ++++++++++--------- .../config/sets/symfony/symfony51.php | 1 - .../DependencyInjectionMethodCallAnalyzer.php | 34 +------ ...ntainerGetToConstructorInjectionRector.php | 48 ++++++++-- .../GetHelperControllerToServiceRector.php | 70 +++++++------- .../GetToConstructorInjectionRector.php | 42 +++++++-- .../src/TypeAnalyzer/ControllerAnalyzer.php | 21 ++++- 25 files changed, 257 insertions(+), 341 deletions(-) delete mode 100644 packages/PostRector/Collector/PropertyToAddCollector.php delete mode 100644 packages/PostRector/Rector/PropertyAddingPostRector.php diff --git a/packages/PostRector/Application/PostFileProcessor.php b/packages/PostRector/Application/PostFileProcessor.php index c3ca7c44c99..02121604c8e 100644 --- a/packages/PostRector/Application/PostFileProcessor.php +++ b/packages/PostRector/Application/PostFileProcessor.php @@ -12,7 +12,6 @@ use Rector\PostRector\Contract\Rector\PostRectorDependencyInterface; use Rector\PostRector\Contract\Rector\PostRectorInterface; use Rector\PostRector\Rector\ClassRenamingPostRector; use Rector\PostRector\Rector\NameImportingPostRector; -use Rector\PostRector\Rector\PropertyAddingPostRector; use Rector\PostRector\Rector\UnusedImportRemovingPostRector; use Rector\PostRector\Rector\UseAddingPostRector; use Rector\Skipper\Skipper\Skipper; @@ -44,7 +43,6 @@ final class PostFileProcessor // set order here UseAddingPostRector $useAddingPostRector, NameImportingPostRector $nameImportingPostRector, - PropertyAddingPostRector $propertyAddingPostRector, ClassRenamingPostRector $classRenamingPostRector, UnusedImportRemovingPostRector $unusedImportRemovingPostRector ) @@ -53,8 +51,6 @@ final class PostFileProcessor $this->currentFileProvider = $currentFileProvider; $this->currentRectorProvider = $currentRectorProvider; $this->postRectors = [ - // priority: 900 - $propertyAddingPostRector, // priority: 650 $classRenamingPostRector, // priority: 600 diff --git a/packages/PostRector/Collector/PropertyToAddCollector.php b/packages/PostRector/Collector/PropertyToAddCollector.php deleted file mode 100644 index ec17592a157..00000000000 --- a/packages/PostRector/Collector/PropertyToAddCollector.php +++ /dev/null @@ -1,46 +0,0 @@ - - */ - private $propertiesByClass = []; - public function __construct(RectorChangeCollector $rectorChangeCollector) - { - $this->rectorChangeCollector = $rectorChangeCollector; - } - public function isActive() : bool - { - return $this->propertiesByClass !== []; - } - public function addPropertyToClass(Class_ $class, PropertyMetadata $propertyMetadata) : void - { - $uniqueHash = \spl_object_hash($class); - $this->propertiesByClass[$uniqueHash][] = $propertyMetadata; - $this->rectorChangeCollector->notifyNodeFileInfo($class); - } - /** - * @return PropertyMetadata[] - */ - public function getPropertiesByClass(Class_ $class) : array - { - $classHash = \spl_object_hash($class); - return $this->propertiesByClass[$classHash] ?? []; - } -} diff --git a/packages/PostRector/Rector/PropertyAddingPostRector.php b/packages/PostRector/Rector/PropertyAddingPostRector.php deleted file mode 100644 index c88e74c30e6..00000000000 --- a/packages/PostRector/Rector/PropertyAddingPostRector.php +++ /dev/null @@ -1,80 +0,0 @@ -classDependencyManipulator = $classDependencyManipulator; - $this->propertyToAddCollector = $propertyToAddCollector; - $this->classAnalyzer = $classAnalyzer; - } - public function enterNode(Node $node) : ?Node - { - if (!$node instanceof Class_) { - return null; - } - if ($this->classAnalyzer->isAnonymousClass($node)) { - return null; - } - $this->addProperties($node); - return $node; - } - public function getRuleDefinition() : RuleDefinition - { - return new RuleDefinition('Add dependency properties', [new CodeSample(<<<'CODE_SAMPLE' -class SomeClass -{ - public function run() - { - return $this->value; - } -} -CODE_SAMPLE -, <<<'CODE_SAMPLE' -class SomeClass -{ - private $value; - public function run() - { - return $this->value; - } -} -CODE_SAMPLE -)]); - } - private function addProperties(Class_ $class) : void - { - $propertiesMetadatas = $this->propertyToAddCollector->getPropertiesByClass($class); - foreach ($propertiesMetadatas as $propertyMetadata) { - $this->classDependencyManipulator->addConstructorDependency($class, $propertyMetadata); - } - } -} diff --git a/packages/PostRector/ValueObject/PropertyMetadata.php b/packages/PostRector/ValueObject/PropertyMetadata.php index ad7aaee0c72..5aee79a141f 100644 --- a/packages/PostRector/ValueObject/PropertyMetadata.php +++ b/packages/PostRector/ValueObject/PropertyMetadata.php @@ -3,6 +3,7 @@ declare (strict_types=1); namespace Rector\PostRector\ValueObject; +use PhpParser\Node\Stmt\Class_; use PHPStan\Type\Type; final class PropertyMetadata { @@ -20,8 +21,8 @@ final class PropertyMetadata * @readonly * @var int */ - private $flags; - public function __construct(string $name, ?Type $type, int $flags) + private $flags = Class_::MODIFIER_PRIVATE; + public function __construct(string $name, ?Type $type, int $flags = Class_::MODIFIER_PRIVATE) { $this->name = $name; $this->type = $type; diff --git a/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php b/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php index a3ff4c97f36..ba13cb212b1 100644 --- a/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php +++ b/rules/CodeQuality/Rector/Class_/CompleteDynamicPropertiesRector.php @@ -180,7 +180,7 @@ CODE_SAMPLE if ($classReflection->hasProperty($propertyToComplete)) { continue; } - $propertyMetadata = new PropertyMetadata($propertyToComplete, new ObjectType($className), Class_::MODIFIER_PRIVATE); + $propertyMetadata = new PropertyMetadata($propertyToComplete, new ObjectType($className)); $hasClassContextProperty = $this->propertyPresenceChecker->hasClassContextProperty($class, $propertyMetadata); if ($hasClassContextProperty) { continue; diff --git a/rules/Transform/NodeAnalyzer/FuncCallStaticCallToMethodCallAnalyzer.php b/rules/Transform/NodeAnalyzer/FuncCallStaticCallToMethodCallAnalyzer.php index d604a4d6268..96dc70d7438 100644 --- a/rules/Transform/NodeAnalyzer/FuncCallStaticCallToMethodCallAnalyzer.php +++ b/rules/Transform/NodeAnalyzer/FuncCallStaticCallToMethodCallAnalyzer.php @@ -11,10 +11,10 @@ use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\ClassMethod; use PhpParser\Node\Stmt\Function_; use PHPStan\Type\ObjectType; +use Rector\Core\NodeManipulator\ClassDependencyManipulator; use Rector\Core\PhpParser\Node\NodeFactory; use Rector\Naming\Naming\PropertyNaming; use Rector\NodeNameResolver\NodeNameResolver; -use Rector\PostRector\Collector\PropertyToAddCollector; use Rector\PostRector\ValueObject\PropertyMetadata; use Rector\Transform\NodeFactory\PropertyFetchFactory; use Rector\Transform\NodeTypeAnalyzer\TypeProvidingExprFromClassResolver; @@ -47,17 +47,17 @@ final class FuncCallStaticCallToMethodCallAnalyzer private $propertyFetchFactory; /** * @readonly - * @var \Rector\PostRector\Collector\PropertyToAddCollector + * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator */ - private $propertyToAddCollector; - public function __construct(TypeProvidingExprFromClassResolver $typeProvidingExprFromClassResolver, PropertyNaming $propertyNaming, NodeNameResolver $nodeNameResolver, NodeFactory $nodeFactory, PropertyFetchFactory $propertyFetchFactory, PropertyToAddCollector $propertyToAddCollector) + private $classDependencyManipulator; + public function __construct(TypeProvidingExprFromClassResolver $typeProvidingExprFromClassResolver, PropertyNaming $propertyNaming, NodeNameResolver $nodeNameResolver, NodeFactory $nodeFactory, PropertyFetchFactory $propertyFetchFactory, ClassDependencyManipulator $classDependencyManipulator) { $this->typeProvidingExprFromClassResolver = $typeProvidingExprFromClassResolver; $this->propertyNaming = $propertyNaming; $this->nodeNameResolver = $nodeNameResolver; $this->nodeFactory = $nodeFactory; $this->propertyFetchFactory = $propertyFetchFactory; - $this->propertyToAddCollector = $propertyToAddCollector; + $this->classDependencyManipulator = $classDependencyManipulator; } /** * @return \PhpParser\Node\Expr\MethodCall|\PhpParser\Node\Expr\PropertyFetch|\PhpParser\Node\Expr\Variable @@ -72,8 +72,7 @@ final class FuncCallStaticCallToMethodCallAnalyzer return $expr; } $propertyName = $this->propertyNaming->fqnToVariableName($objectType); - $propertyMetadata = new PropertyMetadata($propertyName, $objectType, Class_::MODIFIER_PRIVATE); - $this->propertyToAddCollector->addPropertyToClass($class, $propertyMetadata); + $this->classDependencyManipulator->addConstructorDependency($class, new PropertyMetadata($propertyName, $objectType)); return $this->propertyFetchFactory->createFromType($objectType); } /** diff --git a/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php b/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php index 38626565aae..5be2c1672d0 100644 --- a/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php +++ b/rules/Transform/Rector/StaticCall/StaticCallToMethodCallRector.php @@ -9,7 +9,6 @@ use PhpParser\Node\Expr\New_; use PhpParser\Node\Expr\StaticCall; use PhpParser\Node\Name\FullyQualified; use PhpParser\Node\Stmt\Class_; -use PhpParser\Node\Stmt\ClassMethod; use PHPStan\Analyser\Scope; use Rector\Core\Contract\Rector\ConfigurableRectorInterface; use Rector\Core\Exception\ShouldNotHappenException; @@ -78,40 +77,46 @@ CODE_SAMPLE */ public function getNodeTypes() : array { - return [StaticCall::class]; + return [Class_::class]; } /** - * @param StaticCall $node + * @param Class_ $node */ public function refactorWithScope(Node $node, Scope $scope) : ?Node { - $classLike = $this->betterNodeFinder->findParentType($node, Class_::class); - if (!$classLike instanceof Class_) { - return null; + $class = $node; + $hasChanged = \false; + foreach ($node->getMethods() as $classMethod) { + $this->traverseNodesWithCallable($classMethod, function (Node $node) use($class, $classMethod, &$hasChanged) { + if (!$node instanceof StaticCall) { + return null; + } + foreach ($this->staticCallsToMethodCalls as $staticCallToMethodCall) { + if (!$staticCallToMethodCall->isStaticCallMatch($node)) { + continue; + } + if ($classMethod->isStatic()) { + return $this->refactorToInstanceCall($node, $staticCallToMethodCall); + } + $expr = $this->funcCallStaticCallToMethodCallAnalyzer->matchTypeProvidingExpr($class, $classMethod, $staticCallToMethodCall->getClassObjectType()); + if ($staticCallToMethodCall->getMethodName() === '*') { + $methodName = $this->getName($node->name); + } else { + $methodName = $staticCallToMethodCall->getMethodName(); + } + if (!\is_string($methodName)) { + throw new ShouldNotHappenException(); + } + $hasChanged = \true; + return new MethodCall($expr, $methodName, $node->args); + } + return $node; + }); } - $classMethod = $this->betterNodeFinder->findParentType($node, ClassMethod::class); - if (!$classMethod instanceof ClassMethod) { - return null; + if ($hasChanged) { + return $node; } - foreach ($this->staticCallsToMethodCalls as $staticCallToMethodCall) { - if (!$staticCallToMethodCall->isStaticCallMatch($node)) { - continue; - } - if ($classMethod->isStatic()) { - return $this->refactorToInstanceCall($node, $staticCallToMethodCall); - } - $expr = $this->funcCallStaticCallToMethodCallAnalyzer->matchTypeProvidingExpr($classLike, $classMethod, $staticCallToMethodCall->getClassObjectType()); - if ($staticCallToMethodCall->getMethodName() === '*') { - $methodName = $this->getName($node->name); - } else { - $methodName = $staticCallToMethodCall->getMethodName(); - } - if (!\is_string($methodName)) { - throw new ShouldNotHappenException(); - } - return new MethodCall($expr, $methodName, $node->args); - } - return $node; + return null; } /** * @param mixed[] $configuration diff --git a/src/Application/VersionResolver.php b/src/Application/VersionResolver.php index 2c501b962a1..29f5f9c25b9 100644 --- a/src/Application/VersionResolver.php +++ b/src/Application/VersionResolver.php @@ -19,12 +19,12 @@ final class VersionResolver * @api * @var string */ - public const PACKAGE_VERSION = '2d13bc9773c3b7b91598312087c236c14b002d28'; + public const PACKAGE_VERSION = '390730a9c40cfad8ca6a089e2dee1b7e158e076e'; /** * @api * @var string */ - public const RELEASE_DATE = '2023-06-08 23:22:53'; + public const RELEASE_DATE = '2023-06-09 11:49:08'; /** * @var int */ diff --git a/src/Kernel/RectorKernel.php b/src/Kernel/RectorKernel.php index 73a29232f77..862ddb407f2 100644 --- a/src/Kernel/RectorKernel.php +++ b/src/Kernel/RectorKernel.php @@ -15,7 +15,7 @@ final class RectorKernel /** * @var string */ - private const CACHE_KEY = 'v77'; + private const CACHE_KEY = 'v79'; /** * @var \Symfony\Component\DependencyInjection\ContainerInterface|null */ diff --git a/vendor/autoload.php b/vendor/autoload.php index 308d303fb40..d7a35fae80c 100644 --- a/vendor/autoload.php +++ b/vendor/autoload.php @@ -22,4 +22,4 @@ if (PHP_VERSION_ID < 50600) { require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitb5c263e2bdede23be55119fc17d4c292::getLoader(); +return ComposerAutoloaderInit25989da06050fec2f81e0b951ae55419::getLoader(); diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index 16c4987544e..a2baee07eb9 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -2417,7 +2417,6 @@ return array( 'Rector\\PhpDocParser\\TypeAnalyzer\\ClassMethodReturnTypeResolver' => $baseDir . '/packages/PhpDocParser/TypeAnalyzer/ClassMethodReturnTypeResolver.php', 'Rector\\PhpDocParser\\ValueObject\\AttributeKey' => $baseDir . '/packages/PhpDocParser/ValueObject/AttributeKey.php', 'Rector\\PostRector\\Application\\PostFileProcessor' => $baseDir . '/packages/PostRector/Application/PostFileProcessor.php', - 'Rector\\PostRector\\Collector\\PropertyToAddCollector' => $baseDir . '/packages/PostRector/Collector/PropertyToAddCollector.php', 'Rector\\PostRector\\Collector\\UseNodesToAddCollector' => $baseDir . '/packages/PostRector/Collector/UseNodesToAddCollector.php', 'Rector\\PostRector\\Contract\\Collector\\NodeCollectorInterface' => $baseDir . '/packages/PostRector/Contract/Collector/NodeCollectorInterface.php', 'Rector\\PostRector\\Contract\\Rector\\ComplementaryRectorInterface' => $baseDir . '/packages/PostRector/Contract/Rector/ComplementaryRectorInterface.php', @@ -2426,7 +2425,6 @@ return array( 'Rector\\PostRector\\Rector\\AbstractPostRector' => $baseDir . '/packages/PostRector/Rector/AbstractPostRector.php', 'Rector\\PostRector\\Rector\\ClassRenamingPostRector' => $baseDir . '/packages/PostRector/Rector/ClassRenamingPostRector.php', 'Rector\\PostRector\\Rector\\NameImportingPostRector' => $baseDir . '/packages/PostRector/Rector/NameImportingPostRector.php', - 'Rector\\PostRector\\Rector\\PropertyAddingPostRector' => $baseDir . '/packages/PostRector/Rector/PropertyAddingPostRector.php', 'Rector\\PostRector\\Rector\\UnusedImportRemovingPostRector' => $baseDir . '/packages/PostRector/Rector/UnusedImportRemovingPostRector.php', 'Rector\\PostRector\\Rector\\UseAddingPostRector' => $baseDir . '/packages/PostRector/Rector/UseAddingPostRector.php', 'Rector\\PostRector\\ValueObject\\PropertyMetadata' => $baseDir . '/packages/PostRector/ValueObject/PropertyMetadata.php', diff --git a/vendor/composer/autoload_real.php b/vendor/composer/autoload_real.php index 2f020fd71cf..a7a177e0858 100644 --- a/vendor/composer/autoload_real.php +++ b/vendor/composer/autoload_real.php @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInitb5c263e2bdede23be55119fc17d4c292 +class ComposerAutoloaderInit25989da06050fec2f81e0b951ae55419 { private static $loader; @@ -22,17 +22,17 @@ class ComposerAutoloaderInitb5c263e2bdede23be55119fc17d4c292 return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInitb5c263e2bdede23be55119fc17d4c292', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit25989da06050fec2f81e0b951ae55419', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__)); - spl_autoload_unregister(array('ComposerAutoloaderInitb5c263e2bdede23be55119fc17d4c292', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit25989da06050fec2f81e0b951ae55419', 'loadClassLoader')); require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitb5c263e2bdede23be55119fc17d4c292::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit25989da06050fec2f81e0b951ae55419::getInitializer($loader)); $loader->setClassMapAuthoritative(true); $loader->register(true); - $filesToLoad = \Composer\Autoload\ComposerStaticInitb5c263e2bdede23be55119fc17d4c292::$files; + $filesToLoad = \Composer\Autoload\ComposerStaticInit25989da06050fec2f81e0b951ae55419::$files; $requireFile = \Closure::bind(static function ($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 69af1ab7469..a160ffee02f 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitb5c263e2bdede23be55119fc17d4c292 +class ComposerStaticInit25989da06050fec2f81e0b951ae55419 { public static $files = array ( 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', @@ -2668,7 +2668,6 @@ class ComposerStaticInitb5c263e2bdede23be55119fc17d4c292 'Rector\\PhpDocParser\\TypeAnalyzer\\ClassMethodReturnTypeResolver' => __DIR__ . '/../..' . '/packages/PhpDocParser/TypeAnalyzer/ClassMethodReturnTypeResolver.php', 'Rector\\PhpDocParser\\ValueObject\\AttributeKey' => __DIR__ . '/../..' . '/packages/PhpDocParser/ValueObject/AttributeKey.php', 'Rector\\PostRector\\Application\\PostFileProcessor' => __DIR__ . '/../..' . '/packages/PostRector/Application/PostFileProcessor.php', - 'Rector\\PostRector\\Collector\\PropertyToAddCollector' => __DIR__ . '/../..' . '/packages/PostRector/Collector/PropertyToAddCollector.php', 'Rector\\PostRector\\Collector\\UseNodesToAddCollector' => __DIR__ . '/../..' . '/packages/PostRector/Collector/UseNodesToAddCollector.php', 'Rector\\PostRector\\Contract\\Collector\\NodeCollectorInterface' => __DIR__ . '/../..' . '/packages/PostRector/Contract/Collector/NodeCollectorInterface.php', 'Rector\\PostRector\\Contract\\Rector\\ComplementaryRectorInterface' => __DIR__ . '/../..' . '/packages/PostRector/Contract/Rector/ComplementaryRectorInterface.php', @@ -2677,7 +2676,6 @@ class ComposerStaticInitb5c263e2bdede23be55119fc17d4c292 'Rector\\PostRector\\Rector\\AbstractPostRector' => __DIR__ . '/../..' . '/packages/PostRector/Rector/AbstractPostRector.php', 'Rector\\PostRector\\Rector\\ClassRenamingPostRector' => __DIR__ . '/../..' . '/packages/PostRector/Rector/ClassRenamingPostRector.php', 'Rector\\PostRector\\Rector\\NameImportingPostRector' => __DIR__ . '/../..' . '/packages/PostRector/Rector/NameImportingPostRector.php', - 'Rector\\PostRector\\Rector\\PropertyAddingPostRector' => __DIR__ . '/../..' . '/packages/PostRector/Rector/PropertyAddingPostRector.php', 'Rector\\PostRector\\Rector\\UnusedImportRemovingPostRector' => __DIR__ . '/../..' . '/packages/PostRector/Rector/UnusedImportRemovingPostRector.php', 'Rector\\PostRector\\Rector\\UseAddingPostRector' => __DIR__ . '/../..' . '/packages/PostRector/Rector/UseAddingPostRector.php', 'Rector\\PostRector\\ValueObject\\PropertyMetadata' => __DIR__ . '/../..' . '/packages/PostRector/ValueObject/PropertyMetadata.php', @@ -3136,9 +3134,9 @@ class ComposerStaticInitb5c263e2bdede23be55119fc17d4c292 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitb5c263e2bdede23be55119fc17d4c292::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitb5c263e2bdede23be55119fc17d4c292::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInitb5c263e2bdede23be55119fc17d4c292::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit25989da06050fec2f81e0b951ae55419::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit25989da06050fec2f81e0b951ae55419::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInit25989da06050fec2f81e0b951ae55419::$classMap; }, null, ClassLoader::class); } diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 844a3c222bf..c17c7e5decf 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -1921,12 +1921,12 @@ "source": { "type": "git", "url": "https:\/\/github.com\/rectorphp\/rector-doctrine.git", - "reference": "08503e7da4f587cb27211ecc3f0726a6ac367998" + "reference": "ca0179995eceabd2acae03c60665bc73494c36ec" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/08503e7da4f587cb27211ecc3f0726a6ac367998", - "reference": "08503e7da4f587cb27211ecc3f0726a6ac367998", + "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-doctrine\/zipball\/ca0179995eceabd2acae03c60665bc73494c36ec", + "reference": "ca0179995eceabd2acae03c60665bc73494c36ec", "shasum": "" }, "require": { @@ -1951,7 +1951,7 @@ "tomasvotruba\/type-coverage": "^0.2", "tomasvotruba\/unused-public": "^0.1" }, - "time": "2023-06-05T09:07:54+00:00", + "time": "2023-06-09T10:43:45+00:00", "default-branch": true, "type": "rector-extension", "extra": { @@ -2125,12 +2125,12 @@ "source": { "type": "git", "url": "https:\/\/github.com\/rectorphp\/rector-symfony.git", - "reference": "59b8f1ede5dfa2f78617328cf18ee8374a5e2980" + "reference": "65e2e8dd71093b38fdf1c150aa79faaac5831c88" }, "dist": { "type": "zip", - "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/59b8f1ede5dfa2f78617328cf18ee8374a5e2980", - "reference": "59b8f1ede5dfa2f78617328cf18ee8374a5e2980", + "url": "https:\/\/api.github.com\/repos\/rectorphp\/rector-symfony\/zipball\/65e2e8dd71093b38fdf1c150aa79faaac5831c88", + "reference": "65e2e8dd71093b38fdf1c150aa79faaac5831c88", "shasum": "" }, "require": { @@ -2160,7 +2160,7 @@ "tomasvotruba\/type-coverage": "^0.2", "tomasvotruba\/unused-public": "^0.1" }, - "time": "2023-06-08T23:14:37+00:00", + "time": "2023-06-09T10:36:08+00:00", "default-branch": true, "type": "rector-extension", "extra": { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index 2771f2886b9..841d39c0bec 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -2,4 +2,4 @@ namespace RectorPrefix202306; -return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => NULL, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(0 => '0.15.x-dev'), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.1.0', 'version' => '3.1.0.0', 'reference' => '4bff79ddd77851fe3cdd11616ed3f92841ba5bd2', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'reference' => 'ced299686f41dce890debac69273b47ffe98a40c', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.0.6', 'version' => '2.0.6.0', 'reference' => 'd9d313a36c872fd6ee06d9a6cbcf713eaa40f024', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.1', 'version' => '3.0.1.0', 'reference' => '531bfb9d15f8aa57454f5f0285b18bec903b8fb7', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '0.5.1', 'version' => '0.5.1.0', 'reference' => 'b58e5a3933e541dc286cc91fc4f3898bbc6f1623', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v10.13.5', 'version' => '10.13.5.0', 'reference' => 'f85a85791c75a754190d6495e6ca611faaa64f61', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v10.13.5', 'version' => '10.13.5.0', 'reference' => '93605a5fc27cead6746d84796725c7c0d7d51d62', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/neon' => array('pretty_version' => 'v3.4.0', 'version' => '3.4.0.0', 'reference' => '372d945c156ee7f35c953339fb164538339e6283', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/neon', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v3.2.9', 'version' => '3.2.9.0', 'reference' => 'c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v4.15.5', 'version' => '4.15.5.0', 'reference' => '11e2663a5bc9db5d714eedb4277ee300403b4a9e', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.1.0', 'version' => '4.1.0.0', 'reference' => '8a4b664e916df82ff26a44709942dfd593fa6f30', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '1.22.0', 'version' => '1.22.0.0', 'reference' => 'ec58baf7b3c7f1c81b3b00617c953249fb8cf30c', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('pretty_version' => '1.10.18', 'version' => '1.10.18.0', 'reference' => '52b6416c579663eebdd2f1d97df21971daf3b43f', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpstan', 'aliases' => array(), 'dev_requirement' => \false), 'psr/cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/event-dispatcher' => array('pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/event-dispatcher', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.5', 'version' => '0.6.5.0', 'reference' => 'e71eb1aa55f057c7a4a0d08d06b0b0a484bead43', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.11.0', 'version' => '1.11.0.0', 'reference' => '3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '6e7e587714fff7a83dcc7025aee42ab3b265ae05', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v2.10.0', 'version' => '2.10.0.0', 'reference' => 'f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.13.0', 'version' => '1.13.0.0', 'reference' => 'cff482bbad5848ecbe8b57da57e4e213b03619aa', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => '7a423506ee1903e89f1e08ec5f0ed430ff784ae9', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => '0.15.x-dev', 1 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '08503e7da4f587cb27211ecc3f0726a6ac367998', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '762ba3bc09f5278dfdd1996b2018de24ffc2082e', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'a842ca4060998ab0b04ece743bbfd80c1d02e1bc', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '0.11.x-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => NULL, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(0 => '0.15.x-dev'), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '59b8f1ede5dfa2f78617328cf18ee8374a5e2980', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '5.0.3', 'version' => '5.0.3.0', 'reference' => '912dc2fbe3e3c1e7873313cc801b100b6c68c87b', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/cache-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/config' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => 'a5e00dec161b08c946a2c16eed02adbeedf827ae', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/config', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => '8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/contracts' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '9e4b5e4e44e7620475dbceecf7c72c3883f3ea35', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/dependency-injection' => array('pretty_version' => 'v6.1.12', 'version' => '6.1.12.0', 'reference' => '360c9d0948e1fe675336346d5862e8e55b378d90', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dependency-injection', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/event-dispatcher-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/filesystem' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => '97b698e1d77d356304def77a8d0cd73090b359ea', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => 'd9b01ba073c44cef617c7907ce2419f8d00d75e2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/http-client-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/polyfill-ctype' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-intl-grapheme' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => '8741e3ed7fe2e91ec099e02446fb86667a0f1628', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/service-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0|3.0')), 'symfony/string' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => 'f2e190ee75ff0f5eced645ec0be5c66fac81f51f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/translation-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symplify/easy-parallel' => array('pretty_version' => '11.1.27', 'version' => '11.1.27.0', 'reference' => '28911142f6a0f4127271f745e2403bb84fcd2b87', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.1.26', 'version' => '11.1.26.0', 'reference' => '3e66b3fec678b74a076395ec629d535fb95293b5', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'tracy/tracy' => array('pretty_version' => 'v2.10.2', 'version' => '2.10.2.0', 'reference' => '882fee7cf4258a602ad4a37461e837ed2ca1406b', 'type' => 'library', 'install_path' => __DIR__ . '/../tracy/tracy', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); +return array('root' => array('name' => 'rector/rector-src', 'pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => NULL, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(0 => '0.15.x-dev'), 'dev' => \false), 'versions' => array('clue/ndjson-react' => array('pretty_version' => 'v1.3.0', 'version' => '1.3.0.0', 'reference' => '392dc165fce93b5bb5c637b67e59619223c931b0', 'type' => 'library', 'install_path' => __DIR__ . '/../clue/ndjson-react', 'aliases' => array(), 'dev_requirement' => \false), 'composer/pcre' => array('pretty_version' => '3.1.0', 'version' => '3.1.0.0', 'reference' => '4bff79ddd77851fe3cdd11616ed3f92841ba5bd2', 'type' => 'library', 'install_path' => __DIR__ . '/./pcre', 'aliases' => array(), 'dev_requirement' => \false), 'composer/semver' => array('pretty_version' => '3.3.2', 'version' => '3.3.2.0', 'reference' => '3953f23262f2bff1919fc82183ad9acb13ff62c9', 'type' => 'library', 'install_path' => __DIR__ . '/./semver', 'aliases' => array(), 'dev_requirement' => \false), 'composer/xdebug-handler' => array('pretty_version' => '3.0.3', 'version' => '3.0.3.0', 'reference' => 'ced299686f41dce890debac69273b47ffe98a40c', 'type' => 'library', 'install_path' => __DIR__ . '/./xdebug-handler', 'aliases' => array(), 'dev_requirement' => \false), 'doctrine/inflector' => array('pretty_version' => '2.0.6', 'version' => '2.0.6.0', 'reference' => 'd9d313a36c872fd6ee06d9a6cbcf713eaa40f024', 'type' => 'library', 'install_path' => __DIR__ . '/../doctrine/inflector', 'aliases' => array(), 'dev_requirement' => \false), 'evenement/evenement' => array('pretty_version' => 'v3.0.1', 'version' => '3.0.1.0', 'reference' => '531bfb9d15f8aa57454f5f0285b18bec903b8fb7', 'type' => 'library', 'install_path' => __DIR__ . '/../evenement/evenement', 'aliases' => array(), 'dev_requirement' => \false), 'fidry/cpu-core-counter' => array('pretty_version' => '0.5.1', 'version' => '0.5.1.0', 'reference' => 'b58e5a3933e541dc286cc91fc4f3898bbc6f1623', 'type' => 'library', 'install_path' => __DIR__ . '/../fidry/cpu-core-counter', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/container' => array('pretty_version' => 'v10.13.5', 'version' => '10.13.5.0', 'reference' => 'f85a85791c75a754190d6495e6ca611faaa64f61', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/container', 'aliases' => array(), 'dev_requirement' => \false), 'illuminate/contracts' => array('pretty_version' => 'v10.13.5', 'version' => '10.13.5.0', 'reference' => '93605a5fc27cead6746d84796725c7c0d7d51d62', 'type' => 'library', 'install_path' => __DIR__ . '/../illuminate/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'nette/neon' => array('pretty_version' => 'v3.4.0', 'version' => '3.4.0.0', 'reference' => '372d945c156ee7f35c953339fb164538339e6283', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/neon', 'aliases' => array(), 'dev_requirement' => \false), 'nette/utils' => array('pretty_version' => 'v3.2.9', 'version' => '3.2.9.0', 'reference' => 'c91bac3470c34b2ecd5400f6e6fdf0b64a836a5c', 'type' => 'library', 'install_path' => __DIR__ . '/../nette/utils', 'aliases' => array(), 'dev_requirement' => \false), 'nikic/php-parser' => array('pretty_version' => 'v4.15.5', 'version' => '4.15.5.0', 'reference' => '11e2663a5bc9db5d714eedb4277ee300403b4a9e', 'type' => 'library', 'install_path' => __DIR__ . '/../nikic/php-parser', 'aliases' => array(), 'dev_requirement' => \false), 'ondram/ci-detector' => array('pretty_version' => '4.1.0', 'version' => '4.1.0.0', 'reference' => '8a4b664e916df82ff26a44709942dfd593fa6f30', 'type' => 'library', 'install_path' => __DIR__ . '/../ondram/ci-detector', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpdoc-parser' => array('pretty_version' => '1.22.0', 'version' => '1.22.0.0', 'reference' => 'ec58baf7b3c7f1c81b3b00617c953249fb8cf30c', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpdoc-parser', 'aliases' => array(), 'dev_requirement' => \false), 'phpstan/phpstan' => array('pretty_version' => '1.10.18', 'version' => '1.10.18.0', 'reference' => '52b6416c579663eebdd2f1d97df21971daf3b43f', 'type' => 'library', 'install_path' => __DIR__ . '/../phpstan/phpstan', 'aliases' => array(), 'dev_requirement' => \false), 'psr/cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'aa5030cfa5405eccfdcb1083ce040c2cb8d253bf', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/cache', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container' => array('pretty_version' => '2.0.2', 'version' => '2.0.2.0', 'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/container', 'aliases' => array(), 'dev_requirement' => \false), 'psr/container-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0')), 'psr/event-dispatcher' => array('pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/event-dispatcher', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/log', 'aliases' => array(), 'dev_requirement' => \false), 'psr/log-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.0|2.0|3.0')), 'psr/simple-cache' => array('pretty_version' => '3.0.0', 'version' => '3.0.0.0', 'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865', 'type' => 'library', 'install_path' => __DIR__ . '/../psr/simple-cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/cache' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => 'd47c472b64aa5608225f47965a484b75c7817d5b', 'type' => 'library', 'install_path' => __DIR__ . '/../react/cache', 'aliases' => array(), 'dev_requirement' => \false), 'react/child-process' => array('pretty_version' => 'v0.6.5', 'version' => '0.6.5.0', 'reference' => 'e71eb1aa55f057c7a4a0d08d06b0b0a484bead43', 'type' => 'library', 'install_path' => __DIR__ . '/../react/child-process', 'aliases' => array(), 'dev_requirement' => \false), 'react/dns' => array('pretty_version' => 'v1.11.0', 'version' => '1.11.0.0', 'reference' => '3be0fc8f1eb37d6875cd6f0c6c7d0be81435de9f', 'type' => 'library', 'install_path' => __DIR__ . '/../react/dns', 'aliases' => array(), 'dev_requirement' => \false), 'react/event-loop' => array('pretty_version' => 'v1.4.0', 'version' => '1.4.0.0', 'reference' => '6e7e587714fff7a83dcc7025aee42ab3b265ae05', 'type' => 'library', 'install_path' => __DIR__ . '/../react/event-loop', 'aliases' => array(), 'dev_requirement' => \false), 'react/promise' => array('pretty_version' => 'v2.10.0', 'version' => '2.10.0.0', 'reference' => 'f913fb8cceba1e6644b7b90c4bfb678ed8a3ef38', 'type' => 'library', 'install_path' => __DIR__ . '/../react/promise', 'aliases' => array(), 'dev_requirement' => \false), 'react/socket' => array('pretty_version' => 'v1.13.0', 'version' => '1.13.0.0', 'reference' => 'cff482bbad5848ecbe8b57da57e4e213b03619aa', 'type' => 'library', 'install_path' => __DIR__ . '/../react/socket', 'aliases' => array(), 'dev_requirement' => \false), 'react/stream' => array('pretty_version' => 'v1.2.0', 'version' => '1.2.0.0', 'reference' => '7a423506ee1903e89f1e08ec5f0ed430ff784ae9', 'type' => 'library', 'install_path' => __DIR__ . '/../react/stream', 'aliases' => array(), 'dev_requirement' => \false), 'rector/extension-installer' => array('pretty_version' => '0.11.2', 'version' => '0.11.2.0', 'reference' => '05544e9b195863b8571ae2a3b903cbec7fa062e0', 'type' => 'composer-plugin', 'install_path' => __DIR__ . '/../rector/extension-installer', 'aliases' => array(), 'dev_requirement' => \false), 'rector/rector' => array('dev_requirement' => \false, 'replaced' => array(0 => '0.15.x-dev', 1 => 'dev-main')), 'rector/rector-doctrine' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'ca0179995eceabd2acae03c60665bc73494c36ec', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-doctrine', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-downgrade-php' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '762ba3bc09f5278dfdd1996b2018de24ffc2082e', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-downgrade-php', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'rector/rector-phpunit' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => 'a842ca4060998ab0b04ece743bbfd80c1d02e1bc', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-phpunit', 'aliases' => array(0 => '0.11.x-dev'), 'dev_requirement' => \false), 'rector/rector-src' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => NULL, 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(0 => '0.15.x-dev'), 'dev_requirement' => \false), 'rector/rector-symfony' => array('pretty_version' => 'dev-main', 'version' => 'dev-main', 'reference' => '65e2e8dd71093b38fdf1c150aa79faaac5831c88', 'type' => 'rector-extension', 'install_path' => __DIR__ . '/../rector/rector-symfony', 'aliases' => array(0 => '9999999-dev'), 'dev_requirement' => \false), 'sebastian/diff' => array('pretty_version' => '5.0.3', 'version' => '5.0.3.0', 'reference' => '912dc2fbe3e3c1e7873313cc801b100b6c68c87b', 'type' => 'library', 'install_path' => __DIR__ . '/../sebastian/diff', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/cache-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/config' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => 'a5e00dec161b08c946a2c16eed02adbeedf827ae', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/config', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/console' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => '8788808b07cf0bdd6e4b7fdd23d8ddb1470c83b7', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/console', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/contracts' => array('pretty_version' => 'v3.3.0', 'version' => '3.3.0.0', 'reference' => '9e4b5e4e44e7620475dbceecf7c72c3883f3ea35', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/contracts', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/dependency-injection' => array('pretty_version' => 'v6.1.12', 'version' => '6.1.12.0', 'reference' => '360c9d0948e1fe675336346d5862e8e55b378d90', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/dependency-injection', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/deprecation-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/event-dispatcher-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/filesystem' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => '97b698e1d77d356304def77a8d0cd73090b359ea', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/filesystem', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/finder' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => 'd9b01ba073c44cef617c7907ce2419f8d00d75e2', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/finder', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/http-client-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/polyfill-ctype' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-intl-grapheme' => array('dev_requirement' => \false, 'replaced' => array(0 => '*')), 'symfony/polyfill-intl-normalizer' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '19bd1e4fcd5b91116f14d8533c57831ed00571b6', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/polyfill-mbstring' => array('pretty_version' => 'v1.27.0', 'version' => '1.27.0.0', 'reference' => '8ad114f6b39e2c98a8b0e3bd907732c207c2b534', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/process' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => '8741e3ed7fe2e91ec099e02446fb86667a0f1628', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/process', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/service-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symfony/service-implementation' => array('dev_requirement' => \false, 'provided' => array(0 => '1.1|2.0|3.0')), 'symfony/string' => array('pretty_version' => 'v6.3.0', 'version' => '6.3.0.0', 'reference' => 'f2e190ee75ff0f5eced645ec0be5c66fac81f51f', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/string', 'aliases' => array(), 'dev_requirement' => \false), 'symfony/translation-contracts' => array('dev_requirement' => \false, 'replaced' => array(0 => 'v3.3.0')), 'symplify/easy-parallel' => array('pretty_version' => '11.1.27', 'version' => '11.1.27.0', 'reference' => '28911142f6a0f4127271f745e2403bb84fcd2b87', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/easy-parallel', 'aliases' => array(), 'dev_requirement' => \false), 'symplify/rule-doc-generator-contracts' => array('pretty_version' => '11.1.26', 'version' => '11.1.26.0', 'reference' => '3e66b3fec678b74a076395ec629d535fb95293b5', 'type' => 'library', 'install_path' => __DIR__ . '/../symplify/rule-doc-generator-contracts', 'aliases' => array(), 'dev_requirement' => \false), 'tracy/tracy' => array('pretty_version' => 'v2.10.2', 'version' => '2.10.2.0', 'reference' => '882fee7cf4258a602ad4a37461e837ed2ca1406b', 'type' => 'library', 'install_path' => __DIR__ . '/../tracy/tracy', 'aliases' => array(), 'dev_requirement' => \false), 'webmozart/assert' => array('pretty_version' => '1.11.0', 'version' => '1.11.0.0', 'reference' => '11cb2199493b2f8a3b53e7f19068fc6aac760991', 'type' => 'library', 'install_path' => __DIR__ . '/../webmozart/assert', 'aliases' => array(), 'dev_requirement' => \false))); diff --git a/vendor/rector/extension-installer/src/GeneratedConfig.php b/vendor/rector/extension-installer/src/GeneratedConfig.php index e65841cdc9d..2f788f2bde7 100644 --- a/vendor/rector/extension-installer/src/GeneratedConfig.php +++ b/vendor/rector/extension-installer/src/GeneratedConfig.php @@ -9,7 +9,7 @@ namespace Rector\RectorInstaller; */ final class GeneratedConfig { - public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 08503e7'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 762ba3b'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main a842ca4'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 59b8f1e')); + public const EXTENSIONS = array('rector/rector-doctrine' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-doctrine', 'relative_install_path' => '../../rector-doctrine', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main ca01799'), 'rector/rector-downgrade-php' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-downgrade-php', 'relative_install_path' => '../../rector-downgrade-php', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 762ba3b'), 'rector/rector-phpunit' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-phpunit', 'relative_install_path' => '../../rector-phpunit', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main a842ca4'), 'rector/rector-symfony' => array('install_path' => '/home/runner/work/rector-src/rector-src/vendor/rector/rector-symfony', 'relative_install_path' => '../../rector-symfony', 'extra' => array('includes' => array(0 => 'config/config.php')), 'version' => 'dev-main 65e2e8d')); private function __construct() { } diff --git a/vendor/rector/rector-doctrine/src/Rector/ClassMethod/ServiceEntityRepositoryParentCallToDIRector.php b/vendor/rector/rector-doctrine/src/Rector/ClassMethod/ServiceEntityRepositoryParentCallToDIRector.php index b6696506f79..b2dd7938a6b 100644 --- a/vendor/rector/rector-doctrine/src/Rector/ClassMethod/ServiceEntityRepositoryParentCallToDIRector.php +++ b/vendor/rector/rector-doctrine/src/Rector/ClassMethod/ServiceEntityRepositoryParentCallToDIRector.php @@ -20,7 +20,6 @@ use Rector\Doctrine\NodeFactory\RepositoryNodeFactory; use Rector\Doctrine\Type\RepositoryTypeFactory; use Rector\Naming\Naming\PropertyNaming; use Rector\NodeTypeResolver\Node\AttributeKey; -use Rector\PostRector\Collector\PropertyToAddCollector; use Rector\PostRector\ValueObject\PropertyMetadata; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -42,11 +41,6 @@ final class ServiceEntityRepositoryParentCallToDIRector extends AbstractRector * @var \Rector\Doctrine\Type\RepositoryTypeFactory */ private $repositoryTypeFactory; - /** - * @readonly - * @var \Rector\PostRector\Collector\PropertyToAddCollector - */ - private $propertyToAddCollector; /** * @readonly * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator @@ -57,11 +51,10 @@ final class ServiceEntityRepositoryParentCallToDIRector extends AbstractRector * @var \Rector\Naming\Naming\PropertyNaming */ private $propertyNaming; - public function __construct(RepositoryNodeFactory $repositoryNodeFactory, RepositoryTypeFactory $repositoryTypeFactory, PropertyToAddCollector $propertyToAddCollector, ClassDependencyManipulator $classDependencyManipulator, PropertyNaming $propertyNaming) + public function __construct(RepositoryNodeFactory $repositoryNodeFactory, RepositoryTypeFactory $repositoryTypeFactory, ClassDependencyManipulator $classDependencyManipulator, PropertyNaming $propertyNaming) { $this->repositoryNodeFactory = $repositoryNodeFactory; $this->repositoryTypeFactory = $repositoryTypeFactory; - $this->propertyToAddCollector = $propertyToAddCollector; $this->classDependencyManipulator = $classDependencyManipulator; $this->propertyNaming = $propertyNaming; } @@ -147,8 +140,9 @@ CODE_SAMPLE $this->addRepositoryProperty($node, $entityReferenceExpr); // 5. add param + add property, dependency $propertyName = $this->propertyNaming->fqnToVariableName($entityManagerObjectType); - $propertyMetadata = new PropertyMetadata($propertyName, $entityManagerObjectType, Class_::MODIFIER_PRIVATE); - $this->propertyToAddCollector->addPropertyToClass($node, $propertyMetadata); + // add property as first element + $propertyMetadata = new PropertyMetadata($propertyName, $entityManagerObjectType); + $this->classDependencyManipulator->addConstructorDependency($node, $propertyMetadata); return $node; } private function removeParentConstructAndCollectEntityReference(ClassMethod $classMethod) : ?Expr @@ -183,6 +177,6 @@ CODE_SAMPLE } $genericObjectType = $this->repositoryTypeFactory->createRepositoryPropertyType($entityReferenceExpr); $property = $this->nodeFactory->createPrivatePropertyFromNameAndType('repository', $genericObjectType); - \array_splice($class->stmts, 0, 0, [$property]); + $class->stmts = \array_merge([$property], $class->stmts); } } diff --git a/vendor/rector/rector-doctrine/src/Rector/Class_/MoveRepositoryFromParentToConstructorRector.php b/vendor/rector/rector-doctrine/src/Rector/Class_/MoveRepositoryFromParentToConstructorRector.php index 451cd18c108..65df73e0808 100644 --- a/vendor/rector/rector-doctrine/src/Rector/Class_/MoveRepositoryFromParentToConstructorRector.php +++ b/vendor/rector/rector-doctrine/src/Rector/Class_/MoveRepositoryFromParentToConstructorRector.php @@ -10,7 +10,6 @@ use PhpParser\Node\Stmt\Property; use PHPStan\Type\Generic\GenericObjectType; use PHPStan\Type\ObjectType; use Rector\Core\NodeManipulator\ClassDependencyManipulator; -use Rector\Core\NodeManipulator\ClassInsertManipulator; use Rector\Core\Rector\AbstractRector; use Rector\Doctrine\NodeAnalyzer\EntityObjectTypeResolver; use Rector\Doctrine\NodeFactory\RepositoryAssignFactory; @@ -26,11 +25,6 @@ final class MoveRepositoryFromParentToConstructorRector extends AbstractRector * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator */ private $classDependencyManipulator; - /** - * @readonly - * @var \Rector\Core\NodeManipulator\ClassInsertManipulator - */ - private $classInsertManipulator; /** * @readonly * @var \Rector\Doctrine\NodeFactory\RepositoryAssignFactory @@ -41,10 +35,9 @@ final class MoveRepositoryFromParentToConstructorRector extends AbstractRector * @var \Rector\Doctrine\NodeAnalyzer\EntityObjectTypeResolver */ private $entityObjectTypeResolver; - public function __construct(ClassDependencyManipulator $classDependencyManipulator, ClassInsertManipulator $classInsertManipulator, RepositoryAssignFactory $repositoryAssignFactory, EntityObjectTypeResolver $entityObjectTypeResolver) + public function __construct(ClassDependencyManipulator $classDependencyManipulator, RepositoryAssignFactory $repositoryAssignFactory, EntityObjectTypeResolver $entityObjectTypeResolver) { $this->classDependencyManipulator = $classDependencyManipulator; - $this->classInsertManipulator = $classInsertManipulator; $this->repositoryAssignFactory = $repositoryAssignFactory; $this->entityObjectTypeResolver = $entityObjectTypeResolver; } @@ -105,7 +98,8 @@ CODE_SAMPLE $genericObjectType = new GenericObjectType('Doctrine\\ORM\\EntityRepository', [$subtractableType]); // add $repository property if (!$node->getProperty('repository') instanceof Property) { - $this->classInsertManipulator->addPropertyToClass($node, 'repository', $genericObjectType); + $repositoryProperty = $this->nodeFactory->createPrivatePropertyFromNameAndType('repository', $genericObjectType); + $node->stmts = \array_merge([$repositoryProperty], $node->stmts); } // add $entityManager and assign to constuctor $repositoryAssign = $this->repositoryAssignFactory->create($node); diff --git a/vendor/rector/rector-doctrine/src/Rector/MethodCall/ReplaceParentRepositoryCallsByRepositoryPropertyRector.php b/vendor/rector/rector-doctrine/src/Rector/MethodCall/ReplaceParentRepositoryCallsByRepositoryPropertyRector.php index 28d7498fc97..1d6429a46ed 100644 --- a/vendor/rector/rector-doctrine/src/Rector/MethodCall/ReplaceParentRepositoryCallsByRepositoryPropertyRector.php +++ b/vendor/rector/rector-doctrine/src/Rector/MethodCall/ReplaceParentRepositoryCallsByRepositoryPropertyRector.php @@ -11,8 +11,8 @@ use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Stmt\Class_; use PHPStan\Type\ObjectType; use Rector\Core\Exception\ShouldNotHappenException; +use Rector\Core\NodeManipulator\ClassDependencyManipulator; use Rector\Core\Rector\AbstractRector; -use Rector\PostRector\Collector\PropertyToAddCollector; use Rector\PostRector\ValueObject\PropertyMetadata; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -23,16 +23,16 @@ final class ReplaceParentRepositoryCallsByRepositoryPropertyRector extends Abstr { /** * @readonly - * @var \Rector\PostRector\Collector\PropertyToAddCollector + * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator */ - private $propertyToAddCollector; + private $classDependencyManipulator; /** * @var string[] */ private const ENTITY_REPOSITORY_PUBLIC_METHODS = ['createQueryBuilder', 'createResultSetMappingBuilder', 'clear', 'find', 'findBy', 'findAll', 'findOneBy', 'count', 'getClassName', 'matching']; - public function __construct(PropertyToAddCollector $propertyToAddCollector) + public function __construct(ClassDependencyManipulator $classDependencyManipulator) { - $this->propertyToAddCollector = $propertyToAddCollector; + $this->classDependencyManipulator = $classDependencyManipulator; } public function getRuleDefinition() : RuleDefinition { @@ -65,28 +65,40 @@ CODE_SAMPLE */ public function getNodeTypes() : array { - return [MethodCall::class]; + return [Class_::class]; } /** - * @param MethodCall $node + * @param Class_ $node */ public function refactor(Node $node) : ?Node { - if (!$this->isObjectType($node->var, new ObjectType('Doctrine\\ORM\\EntityRepository'))) { - return null; + $hasChanged = \false; + $class = $node; + $this->traverseNodesWithCallable($node->getMethods(), function (Node $node) use(&$hasChanged, $class) { + if (!$node instanceof MethodCall) { + return null; + } + if (!$this->isObjectType($node->var, new ObjectType('Doctrine\\ORM\\EntityRepository'))) { + return null; + } + if (!$this->isNames($node->name, self::ENTITY_REPOSITORY_PUBLIC_METHODS)) { + return null; + } + if ($node->isFirstClassCallable()) { + return null; + } + $hasChanged = \true; + // is it getRepository(), replace it with DI property + if ($node->var instanceof MethodCall && $this->isName($node->var->name, 'getRepository')) { + return $this->refactorGetRepositoryMethodCall($class, $node); + } + $node->var = $this->nodeFactory->createPropertyFetch('this', 'repository'); + }); + if ($hasChanged) { + // @todo add constructor property here + return $node; } - if (!$this->isNames($node->name, self::ENTITY_REPOSITORY_PUBLIC_METHODS)) { - return null; - } - if ($node->isFirstClassCallable()) { - return null; - } - // is it getRepository(), replace it with DI property - if ($node->var instanceof MethodCall && $this->isName($node->var->name, 'getRepository')) { - return $this->refactorGetRepositoryMethodCall($node); - } - $node->var = $this->nodeFactory->createPropertyFetch('this', 'repository'); - return $node; + return null; } private function resolveRepositoryName(Expr $expr) : string { @@ -97,40 +109,35 @@ CODE_SAMPLE $lastNamePart = (string) Strings::after($entityReferenceName, '\\', -1); return \lcfirst($lastNamePart) . 'Repository'; } - private function guessRepositoryType(Expr $expr) : string + private function guessRepositoryType(Expr $expr) : ObjectType { if ($expr instanceof ClassConstFetch) { $entityClass = $this->getName($expr->class); if ($entityClass === null) { - return 'Unknown_Repository_Class'; + return new ObjectType('Unknown_Repository_Class'); } $entityClassNamespace = (string) Strings::before($entityClass, '\\', -2); $lastNamePart = (string) Strings::after($entityClass, '\\', -1); - return $entityClassNamespace . '\\Repository\\' . $lastNamePart . 'Repository'; + return new ObjectType($entityClassNamespace . '\\Repository\\' . $lastNamePart . 'Repository'); } - return 'Unknown_Repository_Class'; + return new ObjectType('Unknown_Repository_Class'); } - private function refactorGetRepositoryMethodCall(MethodCall $methodCall) : ?MethodCall + private function refactorGetRepositoryMethodCall(Class_ $class, MethodCall $methodCall) : ?MethodCall { /** @var MethodCall $parentMethodCall */ $parentMethodCall = $methodCall->var; - if (\count($parentMethodCall->args) === 1) { - $class = $this->betterNodeFinder->findParentType($methodCall, Class_::class); - if (!$class instanceof Class_) { - return null; - } - if ($this->isObjectType($class, new ObjectType('Doctrine\\ORM\\EntityRepository'))) { - return null; - } - $firstArgValue = $parentMethodCall->getArgs()[0]->value; - $repositoryPropertyName = $this->resolveRepositoryName($firstArgValue); - $repositoryType = $this->guessRepositoryType($firstArgValue); - $objectType = new ObjectType($repositoryType); - $propertyMetadata = new PropertyMetadata($repositoryPropertyName, $objectType, Class_::MODIFIER_PRIVATE); - $this->propertyToAddCollector->addPropertyToClass($class, $propertyMetadata); - $methodCall->var = $this->nodeFactory->createPropertyFetch('this', $repositoryPropertyName); - return $methodCall; + if (\count($parentMethodCall->args) !== 1) { + return null; } - return null; + if ($this->isObjectType($class, new ObjectType('Doctrine\\ORM\\EntityRepository'))) { + return null; + } + $firstArgValue = $parentMethodCall->getArgs()[0]->value; + $repositoryPropertyName = $this->resolveRepositoryName($firstArgValue); + $repositoryType = $this->guessRepositoryType($firstArgValue); + $propertyMetadata = new PropertyMetadata($repositoryPropertyName, $repositoryType); + $this->classDependencyManipulator->addConstructorDependency($class, $propertyMetadata); + $methodCall->var = $this->nodeFactory->createPropertyFetch('this', $repositoryPropertyName); + return $methodCall; } } diff --git a/vendor/rector/rector-symfony/config/sets/symfony/symfony51.php b/vendor/rector/rector-symfony/config/sets/symfony/symfony51.php index ce6898f6b51..3259a6ba322 100644 --- a/vendor/rector/rector-symfony/config/sets/symfony/symfony51.php +++ b/vendor/rector/rector-symfony/config/sets/symfony/symfony51.php @@ -18,7 +18,6 @@ use Rector\Symfony\Rector\Class_\LogoutSuccessHandlerToLogoutEventSubscriberRect use Rector\Symfony\Rector\ClassMethod\CommandConstantReturnCodeRector; use Rector\Symfony\Rector\ClassMethod\RouteCollectionBuilderToRoutingConfiguratorRector; use Rector\Transform\Rector\StaticCall\StaticCallToNewRector; -use Rector\Transform\ValueObject\NewArgToMethodCall; use Rector\Transform\ValueObject\StaticCallToNew; use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeDeclarationRector; use Rector\TypeDeclaration\ValueObject\AddParamTypeDeclaration; diff --git a/vendor/rector/rector-symfony/src/NodeAnalyzer/DependencyInjectionMethodCallAnalyzer.php b/vendor/rector/rector-symfony/src/NodeAnalyzer/DependencyInjectionMethodCallAnalyzer.php index 66d1823a7d6..afa58acff4e 100644 --- a/vendor/rector/rector-symfony/src/NodeAnalyzer/DependencyInjectionMethodCallAnalyzer.php +++ b/vendor/rector/rector-symfony/src/NodeAnalyzer/DependencyInjectionMethodCallAnalyzer.php @@ -4,17 +4,13 @@ declare (strict_types=1); namespace Rector\Symfony\NodeAnalyzer; use PhpParser\Node\Expr\MethodCall; -use PhpParser\Node\Expr\PropertyFetch; use PhpParser\Node\Stmt\Class_; use PhpParser\Node\Stmt\Property; use PHPStan\Type\ObjectType; use Rector\Core\NodeManipulator\PropertyManipulator; -use Rector\Core\PhpParser\Node\BetterNodeFinder; -use Rector\Core\PhpParser\Node\NodeFactory; use Rector\Naming\Naming\PropertyNaming; use Rector\NodeNameResolver\NodeNameResolver; use Rector\Php80\NodeAnalyzer\PromotedPropertyResolver; -use Rector\PostRector\Collector\PropertyToAddCollector; use Rector\PostRector\ValueObject\PropertyMetadata; final class DependencyInjectionMethodCallAnalyzer { @@ -28,21 +24,6 @@ final class DependencyInjectionMethodCallAnalyzer * @var \Rector\Symfony\NodeAnalyzer\ServiceTypeMethodCallResolver */ private $serviceTypeMethodCallResolver; - /** - * @readonly - * @var \Rector\Core\PhpParser\Node\NodeFactory - */ - private $nodeFactory; - /** - * @readonly - * @var \Rector\PostRector\Collector\PropertyToAddCollector - */ - private $propertyToAddCollector; - /** - * @readonly - * @var \Rector\Core\PhpParser\Node\BetterNodeFinder - */ - private $betterNodeFinder; /** * @readonly * @var \Rector\Php80\NodeAnalyzer\PromotedPropertyResolver @@ -58,27 +39,20 @@ final class DependencyInjectionMethodCallAnalyzer * @var \Rector\Core\NodeManipulator\PropertyManipulator */ private $propertyManipulator; - public function __construct(PropertyNaming $propertyNaming, \Rector\Symfony\NodeAnalyzer\ServiceTypeMethodCallResolver $serviceTypeMethodCallResolver, NodeFactory $nodeFactory, PropertyToAddCollector $propertyToAddCollector, BetterNodeFinder $betterNodeFinder, PromotedPropertyResolver $promotedPropertyResolver, NodeNameResolver $nodeNameResolver, PropertyManipulator $propertyManipulator) + public function __construct(PropertyNaming $propertyNaming, \Rector\Symfony\NodeAnalyzer\ServiceTypeMethodCallResolver $serviceTypeMethodCallResolver, PromotedPropertyResolver $promotedPropertyResolver, NodeNameResolver $nodeNameResolver, PropertyManipulator $propertyManipulator) { $this->propertyNaming = $propertyNaming; $this->serviceTypeMethodCallResolver = $serviceTypeMethodCallResolver; - $this->nodeFactory = $nodeFactory; - $this->propertyToAddCollector = $propertyToAddCollector; - $this->betterNodeFinder = $betterNodeFinder; $this->promotedPropertyResolver = $promotedPropertyResolver; $this->nodeNameResolver = $nodeNameResolver; $this->propertyManipulator = $propertyManipulator; } - public function replaceMethodCallWithPropertyFetchAndDependency(MethodCall $methodCall) : ?PropertyFetch + public function replaceMethodCallWithPropertyFetchAndDependency(Class_ $class, MethodCall $methodCall) : ?PropertyMetadata { $serviceType = $this->serviceTypeMethodCallResolver->resolve($methodCall); if (!$serviceType instanceof ObjectType) { return null; } - $class = $this->betterNodeFinder->findParentType($methodCall, Class_::class); - if (!$class instanceof Class_) { - return null; - } $resolvedPropertyNameByType = $this->propertyManipulator->resolveExistingClassPropertyNameByType($class, $serviceType); if (\is_string($resolvedPropertyNameByType)) { $propertyName = $resolvedPropertyNameByType; @@ -86,9 +60,7 @@ final class DependencyInjectionMethodCallAnalyzer $propertyName = $this->propertyNaming->fqnToVariableName($serviceType); $propertyName = $this->resolveNewPropertyNameWhenExists($class, $propertyName, $propertyName); } - $propertyMetadata = new PropertyMetadata($propertyName, $serviceType, Class_::MODIFIER_PRIVATE); - $this->propertyToAddCollector->addPropertyToClass($class, $propertyMetadata); - return $this->nodeFactory->createPropertyFetch('this', $propertyName); + return new PropertyMetadata($propertyName, $serviceType); } private function resolveNewPropertyNameWhenExists(Class_ $class, string $originalPropertyName, string $propertyName, int $count = 1) : string { diff --git a/vendor/rector/rector-symfony/src/Rector/MethodCall/ContainerGetToConstructorInjectionRector.php b/vendor/rector/rector-symfony/src/Rector/MethodCall/ContainerGetToConstructorInjectionRector.php index 4abc408abc7..d5f409db88a 100644 --- a/vendor/rector/rector-symfony/src/Rector/MethodCall/ContainerGetToConstructorInjectionRector.php +++ b/vendor/rector/rector-symfony/src/Rector/MethodCall/ContainerGetToConstructorInjectionRector.php @@ -5,9 +5,12 @@ namespace Rector\Symfony\Rector\MethodCall; use PhpParser\Node; use PhpParser\Node\Expr\MethodCall; +use PhpParser\Node\Stmt\Class_; use PHPStan\Type\ObjectType; +use Rector\Core\NodeManipulator\ClassDependencyManipulator; use Rector\Core\Rector\AbstractRector; use Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer; +use Rector\PostRector\ValueObject\PropertyMetadata; use Rector\Symfony\NodeAnalyzer\DependencyInjectionMethodCallAnalyzer; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; use Symplify\RuleDocGenerator\ValueObject\RuleDefinition; @@ -28,10 +31,16 @@ final class ContainerGetToConstructorInjectionRector extends AbstractRector * @var \Rector\PHPUnit\NodeAnalyzer\TestsNodeAnalyzer */ private $testsNodeAnalyzer; - public function __construct(DependencyInjectionMethodCallAnalyzer $dependencyInjectionMethodCallAnalyzer, TestsNodeAnalyzer $testsNodeAnalyzer) + /** + * @readonly + * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator + */ + private $classDependencyManipulator; + public function __construct(DependencyInjectionMethodCallAnalyzer $dependencyInjectionMethodCallAnalyzer, TestsNodeAnalyzer $testsNodeAnalyzer, ClassDependencyManipulator $classDependencyManipulator) { $this->dependencyInjectionMethodCallAnalyzer = $dependencyInjectionMethodCallAnalyzer; $this->testsNodeAnalyzer = $testsNodeAnalyzer; + $this->classDependencyManipulator = $classDependencyManipulator; } public function getRuleDefinition() : RuleDefinition { @@ -69,22 +78,41 @@ CODE_SAMPLE */ public function getNodeTypes() : array { - return [MethodCall::class]; + return [Class_::class]; } /** - * @param MethodCall $node + * @param Class_ $node */ public function refactor(Node $node) : ?Node { - if (!$this->isName($node->name, 'get')) { - return null; - } - if (!$this->isObjectType($node->var, new ObjectType('Symfony\\Component\\DependencyInjection\\ContainerInterface'))) { - return null; - } if ($this->testsNodeAnalyzer->isInTestClass($node)) { return null; } - return $this->dependencyInjectionMethodCallAnalyzer->replaceMethodCallWithPropertyFetchAndDependency($node); + $class = $node; + $propertyMetadatas = []; + $this->traverseNodesWithCallable($class, function (Node $node) use($class, &$propertyMetadatas) : ?Node { + if (!$node instanceof MethodCall) { + return null; + } + if (!$this->isName($node->name, 'get')) { + return null; + } + if (!$this->isObjectType($node->var, new ObjectType('Symfony\\Component\\DependencyInjection\\ContainerInterface'))) { + return null; + } + $propertyMetadata = $this->dependencyInjectionMethodCallAnalyzer->replaceMethodCallWithPropertyFetchAndDependency($class, $node); + if (!$propertyMetadata instanceof PropertyMetadata) { + return null; + } + $propertyMetadatas[] = $propertyMetadata; + return $this->nodeFactory->createPropertyFetch('this', $propertyMetadata->getName()); + }); + if ($propertyMetadatas === []) { + return null; + } + foreach ($propertyMetadatas as $propertyMetadata) { + $this->classDependencyManipulator->addConstructorDependency($class, $propertyMetadata); + } + return $node; } } diff --git a/vendor/rector/rector-symfony/src/Rector/MethodCall/GetHelperControllerToServiceRector.php b/vendor/rector/rector-symfony/src/Rector/MethodCall/GetHelperControllerToServiceRector.php index 9012d9fb4fd..2d7fbfef39e 100644 --- a/vendor/rector/rector-symfony/src/Rector/MethodCall/GetHelperControllerToServiceRector.php +++ b/vendor/rector/rector-symfony/src/Rector/MethodCall/GetHelperControllerToServiceRector.php @@ -10,9 +10,9 @@ use PhpParser\Node\Expr\Variable; use PhpParser\Node\Identifier; use PhpParser\Node\Stmt\Class_; use PHPStan\Type\ObjectType; +use Rector\Core\NodeManipulator\ClassDependencyManipulator; use Rector\Core\Rector\AbstractRector; use Rector\Naming\Naming\PropertyNaming; -use Rector\PostRector\Collector\PropertyToAddCollector; use Rector\PostRector\ValueObject\PropertyMetadata; use Rector\Symfony\TypeAnalyzer\ControllerAnalyzer; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -32,18 +32,18 @@ final class GetHelperControllerToServiceRector extends AbstractRector private $controllerAnalyzer; /** * @readonly - * @var \Rector\PostRector\Collector\PropertyToAddCollector + * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator */ - private $propertyToAddCollector; + private $classDependencyManipulator; /** * @readonly * @var \Rector\Naming\Naming\PropertyNaming */ private $propertyNaming; - public function __construct(ControllerAnalyzer $controllerAnalyzer, PropertyToAddCollector $propertyToAddCollector, PropertyNaming $propertyNaming) + public function __construct(ControllerAnalyzer $controllerAnalyzer, ClassDependencyManipulator $classDependencyManipulator, PropertyNaming $propertyNaming) { $this->controllerAnalyzer = $controllerAnalyzer; - $this->propertyToAddCollector = $propertyToAddCollector; + $this->classDependencyManipulator = $classDependencyManipulator; $this->propertyNaming = $propertyNaming; } public function getRuleDefinition() : RuleDefinition @@ -83,51 +83,59 @@ CODE_SAMPLE */ public function getNodeTypes() : array { - return [MethodCall::class]; + return [Class_::class]; } /** - * @param MethodCall $node + * @param Class_ $node */ public function refactor(Node $node) : ?Node { - if (!$this->controllerAnalyzer->isController($node->var)) { + if (!$this->controllerAnalyzer->isController($node)) { return null; } - $class = $this->betterNodeFinder->findParentType($node, Class_::class); - if (!$class instanceof Class_) { + $propertyMetadatas = []; + $this->traverseNodesWithCallable($node, function (Node $node) use(&$propertyMetadatas) { + if (!$node instanceof MethodCall) { + return null; + } + if (!$this->isName($node->var, 'this')) { + return null; + } + if ($this->isName($node->name, 'getDoctrine')) { + $entityManagerPropertyMetadata = $this->createManagerRegistryPropertyMetadata(); + $propertyMetadatas[] = $entityManagerPropertyMetadata; + return $this->nodeFactory->createPropertyFetch('this', $entityManagerPropertyMetadata->getName()); + } + if ($this->isName($node->name, 'dispatchMessage')) { + $eventDispatcherPropertyMetadata = $this->createMessageBusPropertyMetadata(); + $propertyMetadatas[] = $eventDispatcherPropertyMetadata; + $thisVariable = new Variable('this'); + $node->var = new PropertyFetch($thisVariable, new Identifier($eventDispatcherPropertyMetadata->getName())); + $node->name = new Identifier('dispatch'); + return $node; + } + return null; + }); + if ($propertyMetadatas === []) { return null; } - if ($this->isName($node->name, 'getDoctrine')) { - return $this->refactorGetDoctrine($class); + foreach ($propertyMetadatas as $propertyMetadata) { + $this->classDependencyManipulator->addConstructorDependency($node, $propertyMetadata); } - if ($this->isName($node->name, 'dispatchMessage')) { - return $this->refactorDispatchMessage($class, $node); - } - return null; + return $node; } - /** - * @return \PhpParser\Node|\PhpParser\Node\Expr\MethodCall - */ - private function refactorDispatchMessage(Class_ $class, MethodCall $methodCall) + private function createMessageBusPropertyMetadata() : PropertyMetadata { $propertyName = $this->propertyNaming->fqnToVariableName('Symfony\\Component\\Messenger\\MessageBusInterface'); // add dependency $propertyObjectType = new ObjectType('Symfony\\Component\\Messenger\\MessageBusInterface'); - $propertyMetadata = new PropertyMetadata($propertyName, $propertyObjectType, Class_::MODIFIER_PRIVATE); - $this->propertyToAddCollector->addPropertyToClass($class, $propertyMetadata); - $thisVariable = new Variable('this'); - $methodCall->var = new PropertyFetch($thisVariable, $propertyName); - $methodCall->name = new Identifier('dispatch'); - return $methodCall; + return new PropertyMetadata($propertyName, $propertyObjectType); } - private function refactorGetDoctrine(Class_ $class) : PropertyFetch + private function createManagerRegistryPropertyMetadata() : PropertyMetadata { $propertyName = $this->propertyNaming->fqnToVariableName('Doctrine\\Persistence\\ManagerRegistry'); // add dependency $propertyObjectType = new ObjectType('Doctrine\\Persistence\\ManagerRegistry'); - $propertyMetadata = new PropertyMetadata($propertyName, $propertyObjectType, Class_::MODIFIER_PRIVATE); - $this->propertyToAddCollector->addPropertyToClass($class, $propertyMetadata); - $thisVariable = new Variable('this'); - return new PropertyFetch($thisVariable, $propertyName); + return new PropertyMetadata($propertyName, $propertyObjectType); } } diff --git a/vendor/rector/rector-symfony/src/Rector/MethodCall/GetToConstructorInjectionRector.php b/vendor/rector/rector-symfony/src/Rector/MethodCall/GetToConstructorInjectionRector.php index 7b9014dcde6..4d096f8cc64 100644 --- a/vendor/rector/rector-symfony/src/Rector/MethodCall/GetToConstructorInjectionRector.php +++ b/vendor/rector/rector-symfony/src/Rector/MethodCall/GetToConstructorInjectionRector.php @@ -5,7 +5,10 @@ namespace Rector\Symfony\Rector\MethodCall; use PhpParser\Node; use PhpParser\Node\Expr\MethodCall; +use PhpParser\Node\Stmt\Class_; +use Rector\Core\NodeManipulator\ClassDependencyManipulator; use Rector\Core\Rector\AbstractRector; +use Rector\PostRector\ValueObject\PropertyMetadata; use Rector\Symfony\NodeAnalyzer\DependencyInjectionMethodCallAnalyzer; use Rector\Symfony\TypeAnalyzer\ContainerAwareAnalyzer; use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample; @@ -25,10 +28,16 @@ final class GetToConstructorInjectionRector extends AbstractRector * @var \Rector\Symfony\TypeAnalyzer\ContainerAwareAnalyzer */ private $containerAwareAnalyzer; - public function __construct(DependencyInjectionMethodCallAnalyzer $dependencyInjectionMethodCallAnalyzer, ContainerAwareAnalyzer $containerAwareAnalyzer) + /** + * @readonly + * @var \Rector\Core\NodeManipulator\ClassDependencyManipulator + */ + private $classDependencyManipulator; + public function __construct(DependencyInjectionMethodCallAnalyzer $dependencyInjectionMethodCallAnalyzer, ContainerAwareAnalyzer $containerAwareAnalyzer, ClassDependencyManipulator $classDependencyManipulator) { $this->dependencyInjectionMethodCallAnalyzer = $dependencyInjectionMethodCallAnalyzer; $this->containerAwareAnalyzer = $containerAwareAnalyzer; + $this->classDependencyManipulator = $classDependencyManipulator; } public function getRuleDefinition() : RuleDefinition { @@ -67,19 +76,38 @@ CODE_SAMPLE */ public function getNodeTypes() : array { - return [MethodCall::class]; + return [Class_::class]; } /** - * @param MethodCall $node + * @param Class_ $node */ public function refactor(Node $node) : ?Node { - if (!$this->isName($node->name, 'get')) { + $class = $node; + $propertyMetadatas = []; + $this->traverseNodesWithCallable($class, function (Node $node) use($class, &$propertyMetadatas) : ?Node { + if (!$node instanceof MethodCall) { + return null; + } + if (!$this->isName($node->name, 'get')) { + return null; + } + if (!$this->containerAwareAnalyzer->isGetMethodAwareType($node->var)) { + return null; + } + $propertyMetadata = $this->dependencyInjectionMethodCallAnalyzer->replaceMethodCallWithPropertyFetchAndDependency($class, $node); + if (!$propertyMetadata instanceof PropertyMetadata) { + return null; + } + $propertyMetadatas[] = $propertyMetadata; + return $this->nodeFactory->createPropertyFetch('this', $propertyMetadata->getName()); + }); + if ($propertyMetadatas === []) { return null; } - if (!$this->containerAwareAnalyzer->isGetMethodAwareType($node->var)) { - return null; + foreach ($propertyMetadatas as $propertyMetadata) { + $this->classDependencyManipulator->addConstructorDependency($node, $propertyMetadata); } - return $this->dependencyInjectionMethodCallAnalyzer->replaceMethodCallWithPropertyFetchAndDependency($node); + return $node; } } diff --git a/vendor/rector/rector-symfony/src/TypeAnalyzer/ControllerAnalyzer.php b/vendor/rector/rector-symfony/src/TypeAnalyzer/ControllerAnalyzer.php index 15bde292d04..67702b6f20c 100644 --- a/vendor/rector/rector-symfony/src/TypeAnalyzer/ControllerAnalyzer.php +++ b/vendor/rector/rector-symfony/src/TypeAnalyzer/ControllerAnalyzer.php @@ -5,6 +5,7 @@ namespace Rector\Symfony\TypeAnalyzer; use PhpParser\Node; use PhpParser\Node\Expr; +use PhpParser\Node\Stmt\Class_; use PHPStan\Analyser\Scope; use PHPStan\Reflection\ClassReflection; use PHPStan\Type\ObjectType; @@ -23,14 +24,20 @@ final class ControllerAnalyzer { $this->reflectionResolver = $reflectionResolver; } - public function isController(Expr $expr) : bool + /** + * @param \PhpParser\Node\Expr|\PhpParser\Node\Stmt\Class_ $node + */ + public function isController($node) : bool { - $scope = $expr->getAttribute(AttributeKey::SCOPE); + if ($node instanceof Class_) { + return $this->isControllerClass($node); + } + $scope = $node->getAttribute(AttributeKey::SCOPE); // might be missing in a trait if (!$scope instanceof Scope) { return \false; } - $nodeType = $scope->getType($expr); + $nodeType = $scope->getType($node); if (!$nodeType instanceof TypeWithClassName) { return \false; } @@ -61,4 +68,12 @@ final class ControllerAnalyzer } return $classReflection->isSubclassOf('Symfony\\Bundle\\FrameworkBundle\\Controller\\AbstractController'); } + private function isControllerClass(Class_ $class) : bool + { + $classReflection = $this->reflectionResolver->resolveClassReflection($class); + if (!$classReflection instanceof ClassReflection) { + return \false; + } + return $this->isControllerClassReflection($classReflection); + } }