diff --git a/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector.php b/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector.php index de967aa7..d2e9a5b1 100644 --- a/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector.php +++ b/rules/CodeQuality/Rector/Class_/AddReturnDocBlockToCollectionPropertyGetterByToManyAttributeRector.php @@ -4,6 +4,7 @@ namespace Rector\Doctrine\CodeQuality\Rector\Class_; +use PhpParser\Node\Attribute; use PhpParser\Node; use PhpParser\Node\Expr\ClassConstFetch; use PhpParser\Node\Stmt\Class_; @@ -102,13 +103,13 @@ public function refactorWithScope(Node $node, Scope $scope): ?Node $property = $this->methodUniqueReturnedPropertyResolver->resolve($node, $classMethod); - if ($property === null) { + if (!$property instanceof Property) { continue; } $collectionObjectType = $this->getCollectionObjectTypeFromToManyAttribute($property); - if ($collectionObjectType === null) { + if (!$collectionObjectType instanceof FullyQualifiedObjectType) { return null; } @@ -153,6 +154,6 @@ private function isDoctrineEntityClass(Class_ $class): bool ['Doctrine\ORM\Mapping\Entity', 'Doctrine\ORM\Mapping\Embeddable'], ); - return $entityAttribute !== null; + return $entityAttribute instanceof Attribute; } } diff --git a/src/Set/SetProvider/DoctrineSetProvider.php b/src/Set/SetProvider/DoctrineSetProvider.php index 156a1d0d..9113213f 100644 --- a/src/Set/SetProvider/DoctrineSetProvider.php +++ b/src/Set/SetProvider/DoctrineSetProvider.php @@ -6,7 +6,9 @@ use Rector\Set\Contract\SetInterface; use Rector\Set\Contract\SetProviderInterface; +use Rector\Set\Enum\SetGroup; use Rector\Set\ValueObject\ComposerTriggeredSet; +use Rector\Set\ValueObject\Set; /** * @api collected in core @@ -19,13 +21,71 @@ final class DoctrineSetProvider implements SetProviderInterface public function provide(): array { return [ + new Set(SetGroup::DOCTRINE, 'Code Quality', __DIR__ . '/../../../config/sets/doctrine-code-quality.php'), new ComposerTriggeredSet( - 'doctrine', + SetGroup::DOCTRINE, 'doctrine/common', - '2.10', + '2.0', __DIR__ . '/../../../config/sets/doctrine-common-20.php' ), - // @todo fill rest + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/collection', + '2.2', + __DIR__ . '/../../../config/sets/doctrine-collection-22.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/doctrine-bundle', + '2.10', + __DIR__ . '/../../../config/sets/doctrine-bundle-210.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/dbal', + '3.0', + __DIR__ . '/../../../config/sets/doctrine-dbal-30.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/dbal', + '4.0', + __DIR__ . '/../../../config/sets/doctrine-dbal-40.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/dbal', + '2.10', + __DIR__ . '/../../../config/sets/doctrine-dbal-210.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/dbal', + '2.11', + __DIR__ . '/../../../config/sets/doctrine-dbal-211.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/orm', + '2.5', + __DIR__ . '/../../../config/sets/doctrine-orm-25.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/orm', + '2.13', + __DIR__ . '/../../../config/sets/doctrine-orm-213.php', + ), + new ComposerTriggeredSet( + SetGroup::DOCTRINE, + 'doctrine/orm', + '2.14', + __DIR__ . '/../../../config/sets/doctrine-orm-214.php', + ), + + new Set(SetGroup::ATTRIBUTES, 'Doctrine Attributes', __DIR__ . '/../../../config/sets/attributes/doctrine.php'), + new Set(SetGroup::ATTRIBUTES, 'Doctrine Attributes', __DIR__ . '/../../../config/sets/attributes/gedmo.php'), + new Set(SetGroup::ATTRIBUTES, 'Doctrine Attributes', __DIR__ . '/../../../config/sets/attributes/mongodb.php'), ]; } }