From b93b55f139294e622be214486bece1bbb535ddb8 Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Wed, 24 May 2023 15:21:46 +0200 Subject: [PATCH] Remove GetAndSetToMethodCallRector, as not practical and used for single legacy job --- .../Fixture/fixture2.php.inc | 27 --- .../Fixture/get.php.inc | 35 ---- .../Fixture/klarka.php.inc | 55 ------ .../GetAndSetToMethodCallRectorTest.php | 28 --- .../Source/Klarka.php | 10 - .../Source/SomeContainer.php | 20 -- .../config/configured_rule.php | 17 -- .../Assign/GetAndSetToMethodCallRector.php | 171 ------------------ .../ValueObject/GetAndSetToMethodCall.php | 36 ---- src/Kernel/RectorKernel.php | 2 +- src/NodeAnalyzer/PropertyFetchAnalyzer.php | 22 --- .../MagicPropertyFetchAnalyzer.php | 82 --------- 12 files changed, 1 insertion(+), 504 deletions(-) delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/fixture2.php.inc delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/get.php.inc delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/klarka.php.inc delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/GetAndSetToMethodCallRectorTest.php delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Source/Klarka.php delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Source/SomeContainer.php delete mode 100644 rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/config/configured_rule.php delete mode 100644 rules/Transform/Rector/Assign/GetAndSetToMethodCallRector.php delete mode 100644 rules/Transform/ValueObject/GetAndSetToMethodCall.php delete mode 100644 src/NodeManipulator/MagicPropertyFetchAnalyzer.php diff --git a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/fixture2.php.inc b/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/fixture2.php.inc deleted file mode 100644 index 01d6f5e0cfd..00000000000 --- a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/fixture2.php.inc +++ /dev/null @@ -1,27 +0,0 @@ -someService = new SomeService; - - $parameters = $container->parameters; -} - -?> ------ -addService('someService', new SomeService); - - $parameters = $container->parameters; -} - -?> diff --git a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/get.php.inc b/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/get.php.inc deleted file mode 100644 index c32aaf437b7..00000000000 --- a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/get.php.inc +++ /dev/null @@ -1,35 +0,0 @@ -someService; - - $parameters = $container->parameters; - - if ($container->someService) { - - } -} - -?> ------ -getService('someService'); - - $parameters = $container->parameters; - - if ($container->getService('someService')) { - - } -} - -?> diff --git a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/klarka.php.inc b/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/klarka.php.inc deleted file mode 100644 index 297087c3489..00000000000 --- a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Fixture/klarka.php.inc +++ /dev/null @@ -1,55 +0,0 @@ -leafBreadcrumbCategory) { - $category = $this->leafBreadcrumbCategory; - } - - while ($this->leafLet !== 5) { - } - - while ($this->existingProperty !== 5) { - } - while ($this->existingProperty) { - } - } -} - -?> ------ -get('leafBreadcrumbCategory')) { - $category = $this->get('leafBreadcrumbCategory'); - } - - while ($this->get('leafLet') !== 5) { - } - - while ($this->existingProperty !== 5) { - } - while ($this->existingProperty) { - } - } -} - -?> diff --git a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/GetAndSetToMethodCallRectorTest.php b/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/GetAndSetToMethodCallRectorTest.php deleted file mode 100644 index 2ad41710cb4..00000000000 --- a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/GetAndSetToMethodCallRectorTest.php +++ /dev/null @@ -1,28 +0,0 @@ -doTestFile($filePath); - } - - public static function provideData(): Iterator - { - return self::yieldFilesFromDirectory(__DIR__ . '/Fixture'); - } - - public function provideConfigFilePath(): string - { - return __DIR__ . '/config/configured_rule.php'; - } -} diff --git a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Source/Klarka.php b/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Source/Klarka.php deleted file mode 100644 index 8c4da821b88..00000000000 --- a/rules-tests/Transform/Rector/Assign/GetAndSetToMethodCallRector/Source/Klarka.php +++ /dev/null @@ -1,10 +0,0 @@ -ruleWithConfiguration(GetAndSetToMethodCallRector::class, [ - new GetAndSetToMethodCall(SomeContainer::class, 'getService', 'addService'), - new GetAndSetToMethodCall(Klarka::class, 'get', 'set'), - ]); -}; diff --git a/rules/Transform/Rector/Assign/GetAndSetToMethodCallRector.php b/rules/Transform/Rector/Assign/GetAndSetToMethodCallRector.php deleted file mode 100644 index 0435201ede2..00000000000 --- a/rules/Transform/Rector/Assign/GetAndSetToMethodCallRector.php +++ /dev/null @@ -1,171 +0,0 @@ -someService = $someService; -CODE_SAMPLE - , - <<<'CODE_SAMPLE' -$container = new SomeContainer; -$container->setService("someService", $someService); -CODE_SAMPLE - , - [new GetAndSetToMethodCall('SomeContainer', 'addService', 'getService')] - ), - ]); - } - - /** - * @return array> - */ - public function getNodeTypes(): array - { - return [Assign::class, PropertyFetch::class]; - } - - /** - * @param Assign|PropertyFetch $node - */ - public function refactorWithScope(Node $node, Scope $scope): ?Node - { - if ($node instanceof Assign) { - if ($node->var instanceof PropertyFetch) { - return $this->processMagicSet($node->expr, $node->var, $scope); - } - - return null; - } - - return $this->processPropertyFetch($node, $scope); - } - - /** - * @param mixed[] $configuration - */ - public function configure(array $configuration): void - { - Assert::allIsAOf($configuration, GetAndSetToMethodCall::class); - - $this->getAndSetToMethodCalls = $configuration; - } - - private function processMagicSet(Expr $expr, PropertyFetch $propertyFetch, Scope $scope): ?Node - { - foreach ($this->getAndSetToMethodCalls as $getAndSetToMethodCall) { - $objectType = $getAndSetToMethodCall->getObjectType(); - if ($this->shouldSkipPropertyFetch($propertyFetch, $objectType, $scope)) { - continue; - } - - return $this->createMethodCallNodeFromAssignNode( - $propertyFetch, - $expr, - $getAndSetToMethodCall->getSetMethod() - ); - } - - return null; - } - - private function processPropertyFetch(PropertyFetch $propertyFetch, Scope $scope): ?MethodCall - { - $parentNode = $propertyFetch->getAttribute(AttributeKey::PARENT_NODE); - - foreach ($this->getAndSetToMethodCalls as $getAndSetToMethodCall) { - if ($this->shouldSkipPropertyFetch($propertyFetch, $getAndSetToMethodCall->getObjectType(), $scope)) { - continue; - } - - // setter, skip - if (! $parentNode instanceof Assign) { - return $this->createMethodCallNodeFromPropertyFetchNode( - $propertyFetch, - $getAndSetToMethodCall->getGetMethod() - ); - } - - if ($parentNode->var !== $propertyFetch) { - return $this->createMethodCallNodeFromPropertyFetchNode( - $propertyFetch, - $getAndSetToMethodCall->getGetMethod() - ); - } - } - - return null; - } - - private function shouldSkipPropertyFetch(PropertyFetch $propertyFetch, ObjectType $objectType, Scope $scope): bool - { - if (! $this->isObjectType($propertyFetch->var, $objectType)) { - return true; - } - - if (! $this->magicPropertyFetchAnalyzer->isMagicOnType($propertyFetch, $objectType, $scope)) { - return true; - } - - return $this->propertyFetchAnalyzer->isPropertyToSelf($propertyFetch); - } - - private function createMethodCallNodeFromAssignNode( - PropertyFetch $propertyFetch, - Expr $expr, - string $method - ): MethodCall { - $propertyName = $this->getName($propertyFetch->name); - return $this->nodeFactory->createMethodCall($propertyFetch->var, $method, [$propertyName, $expr]); - } - - private function createMethodCallNodeFromPropertyFetchNode( - PropertyFetch $propertyFetch, - string $method - ): MethodCall { - /** @var Variable $variableNode */ - $variableNode = $propertyFetch->var; - - return $this->nodeFactory->createMethodCall($variableNode, $method, [$this->getName($propertyFetch)]); - } -} diff --git a/rules/Transform/ValueObject/GetAndSetToMethodCall.php b/rules/Transform/ValueObject/GetAndSetToMethodCall.php deleted file mode 100644 index 8b4afb46340..00000000000 --- a/rules/Transform/ValueObject/GetAndSetToMethodCall.php +++ /dev/null @@ -1,36 +0,0 @@ -getMethod; - } - - public function getSetMethod(): string - { - return $this->setMethod; - } - - public function getObjectType(): ObjectType - { - return new ObjectType($this->classType); - } -} diff --git a/src/Kernel/RectorKernel.php b/src/Kernel/RectorKernel.php index e6f329d8380..5dadcf331ea 100644 --- a/src/Kernel/RectorKernel.php +++ b/src/Kernel/RectorKernel.php @@ -17,7 +17,7 @@ final class RectorKernel /** * @var string */ - private const CACHE_KEY = 'v25'; + private const CACHE_KEY = 'v26'; private ContainerInterface|null $container = null; diff --git a/src/NodeAnalyzer/PropertyFetchAnalyzer.php b/src/NodeAnalyzer/PropertyFetchAnalyzer.php index 2f416357259..d4d3b8abfbd 100644 --- a/src/NodeAnalyzer/PropertyFetchAnalyzer.php +++ b/src/NodeAnalyzer/PropertyFetchAnalyzer.php @@ -127,28 +127,6 @@ public function containsLocalPropertyFetchName(Trait_ $trait, string $propertyNa ); } - public function isPropertyToSelf(PropertyFetch $propertyFetch): bool - { - if (! $this->nodeNameResolver->isName($propertyFetch->var, self::THIS)) { - return false; - } - - $class = $this->betterNodeFinder->findParentType($propertyFetch, Class_::class); - if (! $class instanceof Class_) { - return false; - } - - foreach ($class->getProperties() as $property) { - if (! $this->nodeNameResolver->areNamesEqual($property->props[0], $propertyFetch)) { - continue; - } - - return true; - } - - return false; - } - public function isPropertyFetch(Node $node): bool { if ($node instanceof PropertyFetch) { diff --git a/src/NodeManipulator/MagicPropertyFetchAnalyzer.php b/src/NodeManipulator/MagicPropertyFetchAnalyzer.php deleted file mode 100644 index 51b71d987f0..00000000000 --- a/src/NodeManipulator/MagicPropertyFetchAnalyzer.php +++ /dev/null @@ -1,82 +0,0 @@ -property" - */ -final class MagicPropertyFetchAnalyzer -{ - public function __construct( - private readonly NodeNameResolver $nodeNameResolver, - private readonly NodeTypeResolver $nodeTypeResolver, - private readonly ReflectionProvider $reflectionProvider - ) { - } - - public function isMagicOnType(PropertyFetch $propertyFetch, ObjectType $objectType, Scope $scope): bool - { - $varNodeType = $this->nodeTypeResolver->getType($propertyFetch); - if ($varNodeType instanceof ErrorType) { - return true; - } - - if ($varNodeType instanceof MixedType) { - return false; - } - - if ($varNodeType->isSuperTypeOf($objectType)->yes()) { - return false; - } - - $nodeName = $this->nodeNameResolver->getName($propertyFetch->name); - if ($nodeName === null) { - return false; - } - - return ! $this->hasPublicProperty($propertyFetch, $nodeName, $scope); - } - - private function hasPublicProperty( - PropertyFetch | StaticPropertyFetch $expr, - string $propertyName, - Scope $scope - ): bool { - if ($expr instanceof PropertyFetch) { - $propertyFetchType = $scope->getType($expr->var); - } else { - $propertyFetchType = $this->nodeTypeResolver->getType($expr->class); - } - - if (! $propertyFetchType instanceof TypeWithClassName) { - return false; - } - - $propertyFetchType = $propertyFetchType->getClassName(); - if (! $this->reflectionProvider->hasClass($propertyFetchType)) { - return false; - } - - $classReflection = $this->reflectionProvider->getClass($propertyFetchType); - if (! $classReflection->hasProperty($propertyName)) { - return false; - } - - $propertyReflection = $classReflection->getProperty($propertyName, $scope); - return $propertyReflection->isPublic(); - } -}