From 2ed38ef149f9f8be7b3034e97c46c2da90d1feba Mon Sep 17 00:00:00 2001 From: Tomas Votruba Date: Mon, 12 May 2025 18:56:49 +0200 Subject: [PATCH] Add mapped superclass case to ToManyRelationPropertyTypeResolver --- .../ODM/collection_of_superclass.php.inc | 44 +++++++++++++++++++ .../ToManyRelationPropertyTypeResolver.php | 4 +- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 rules-tests/CodeQuality/Rector/Property/TypedPropertyFromToManyRelationTypeRector/Fixture/ODM/collection_of_superclass.php.inc diff --git a/rules-tests/CodeQuality/Rector/Property/TypedPropertyFromToManyRelationTypeRector/Fixture/ODM/collection_of_superclass.php.inc b/rules-tests/CodeQuality/Rector/Property/TypedPropertyFromToManyRelationTypeRector/Fixture/ODM/collection_of_superclass.php.inc new file mode 100644 index 00000000..2b7d0497 --- /dev/null +++ b/rules-tests/CodeQuality/Rector/Property/TypedPropertyFromToManyRelationTypeRector/Fixture/ODM/collection_of_superclass.php.inc @@ -0,0 +1,44 @@ + +----- + diff --git a/src/NodeManipulator/ToManyRelationPropertyTypeResolver.php b/src/NodeManipulator/ToManyRelationPropertyTypeResolver.php index 8573c308..8e9cde0c 100644 --- a/src/NodeManipulator/ToManyRelationPropertyTypeResolver.php +++ b/src/NodeManipulator/ToManyRelationPropertyTypeResolver.php @@ -7,6 +7,7 @@ use PhpParser\Node\Expr; use PhpParser\Node\Param; use PhpParser\Node\Stmt\Property; +use PHPStan\Type\ObjectType; use PHPStan\Type\Type; use Rector\BetterPhpDocParser\PhpDoc\ArrayItemNode; use Rector\BetterPhpDocParser\PhpDoc\DoctrineAnnotationTagValueNode; @@ -65,7 +66,8 @@ private function processToManyRelation( EntityMappingKey::TARGET_ENTITY ) ?: $doctrineAnnotationTagValueNode->getValue(OdmMappingKey::TARGET_DOCUMENT); if (! $targetEntityArrayItemNode instanceof ArrayItemNode) { - return null; + // most likely mapped superclass + return new ObjectType(DoctrineClass::COLLECTION); } $targetEntityClass = $targetEntityArrayItemNode->value;