diff --git a/src/Rector/Dynamic/ParentTypehintedArgumentRector.php b/src/Rector/Dynamic/ParentTypehintedArgumentRector.php index bb4a713a687..71d975222b2 100644 --- a/src/Rector/Dynamic/ParentTypehintedArgumentRector.php +++ b/src/Rector/Dynamic/ParentTypehintedArgumentRector.php @@ -87,8 +87,7 @@ final class ParentTypehintedArgumentRector extends AbstractRector { /** @var Class_ $classMethodNode */ $classNode = $classMethodNode->getAttribute(Attribute::CLASS_NODE); - - $classNodeTypes = $classNode->getAttribute(Attribute::TYPES); + $classNodeTypes = $this->nodeTypeResolver->resolve($classNode); $matchingTypes = $this->getMatchingTypesForClassNode($classNodeTypes); diff --git a/src/Rector/Dynamic/ValueObjectRemoverRector.php b/src/Rector/Dynamic/ValueObjectRemoverRector.php index 0ddbad9e8a9..10b49e6bcec 100644 --- a/src/Rector/Dynamic/ValueObjectRemoverRector.php +++ b/src/Rector/Dynamic/ValueObjectRemoverRector.php @@ -8,6 +8,7 @@ use PhpParser\Node\Name; use PhpParser\Node\Param; use PhpParser\Node\Stmt\Property; use Rector\Node\Attribute; +use Rector\NodeTypeResolver\NodeTypeResolver; use Rector\Rector\AbstractRector; use Rector\ReflectionDocBlock\NodeAnalyzer\DocBlockAnalyzer; @@ -23,13 +24,22 @@ final class ValueObjectRemoverRector extends AbstractRector */ private $docBlockAnalyzer; + /** + * @var NodeTypeResolver + */ + private $nodeTypeResolver; + /** * @param string[] $valueObjectsToSimpleTypes */ - public function __construct(array $valueObjectsToSimpleTypes, DocBlockAnalyzer $docBlockAnalyzer) - { + public function __construct( + array $valueObjectsToSimpleTypes, + DocBlockAnalyzer $docBlockAnalyzer, + NodeTypeResolver $nodeTypeResolver + ) { $this->valueObjectsToSimpleTypes = $valueObjectsToSimpleTypes; $this->docBlockAnalyzer = $docBlockAnalyzer; + $this->nodeTypeResolver = $nodeTypeResolver; } public function isCandidate(Node $node): bool @@ -83,7 +93,7 @@ final class ValueObjectRemoverRector extends AbstractRector return false; } - $classNodeTypes = $newNode->class->getAttribute(Attribute::TYPES); + $classNodeTypes = $this->nodeTypeResolver->resolve($newNode->class); return (bool) array_intersect($classNodeTypes, $this->getValueObjects()); } @@ -98,7 +108,7 @@ final class ValueObjectRemoverRector extends AbstractRector private function processPropertyCandidate(Property $propertyNode): bool { - $propertyNodeTypes = $propertyNode->getAttribute(Attribute::TYPES); + $propertyNodeTypes = $this->nodeTypeResolver->resolve($propertyNode); return (bool) array_intersect($propertyNodeTypes, $this->getValueObjects()); } @@ -117,7 +127,7 @@ final class ValueObjectRemoverRector extends AbstractRector private function matchNewType(Node $node): ?string { - $nodeTypes = $node->getAttribute(Attribute::TYPES); + $nodeTypes = $this->nodeTypeResolver->resolve($node); foreach ($nodeTypes as $propertyType) { if (! isset($this->valueObjectsToSimpleTypes[$propertyType])) { continue;