From 904bd4ee0be70e9e852f3476e070480fb07f904f Mon Sep 17 00:00:00 2001 From: Matt Glaman Date: Thu, 22 May 2025 11:39:50 -0500 Subject: [PATCH 1/2] Overridden EntityReferenceFieldItemListInterface::referencedEntities generics error --- ...ntityReferenceFieldItemListGenericTest.php | 1 + tests/src/Generics/data/bug-878.php | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 tests/src/Generics/data/bug-878.php diff --git a/tests/src/Generics/EntityReferenceFieldItemListGenericTest.php b/tests/src/Generics/EntityReferenceFieldItemListGenericTest.php index b40bf540..91318965 100644 --- a/tests/src/Generics/EntityReferenceFieldItemListGenericTest.php +++ b/tests/src/Generics/EntityReferenceFieldItemListGenericTest.php @@ -14,6 +14,7 @@ final class EntityReferenceFieldItemListGenericTest extends TypeInferenceTestCas public static function dataFileAsserts(): iterable { yield from self::gatherAssertTypes(__DIR__ . '/data/entity-reference-field-item-list.php'); + yield from self::gatherAssertTypes(__DIR__ . '/data/bug-878.php'); } /** diff --git a/tests/src/Generics/data/bug-878.php b/tests/src/Generics/data/bug-878.php new file mode 100644 index 00000000..fd9e23bd --- /dev/null +++ b/tests/src/Generics/data/bug-878.php @@ -0,0 +1,44 @@ +list as $delta => $item) { + if ($item->entity) { + $target_entities[$delta] = $item->entity; + } + } + return $target_entities; + } + + +} + +$paragraphFields = []; + +$node = Node::load(1); +assert($node instanceof Node); + +foreach ($node as $field) { + if ($field instanceof EntityReferenceRevisionsFieldItemList) { + $paragraphFields[] = $field; + } +} + +foreach ($paragraphFields as $field) { + foreach ($field->referencedEntities() as $entity) { + assertType('Drupal\Core\Entity\EntityInterface', $entity); + assertType('int|string|null', $entity->id()); + } +} From fdc13c55426dfcdb28ec545f6ff2eea5d55ab7d6 Mon Sep 17 00:00:00 2001 From: Matt Glaman Date: Thu, 22 May 2025 11:41:17 -0500 Subject: [PATCH 2/2] Define referencedEntities on EntityReferenceFieldItemList stub --- stubs/Drupal/Core/Field/EntityReferenceFieldItemList.stub | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/stubs/Drupal/Core/Field/EntityReferenceFieldItemList.stub b/stubs/Drupal/Core/Field/EntityReferenceFieldItemList.stub index 70477aae..560c2656 100644 --- a/stubs/Drupal/Core/Field/EntityReferenceFieldItemList.stub +++ b/stubs/Drupal/Core/Field/EntityReferenceFieldItemList.stub @@ -12,4 +12,9 @@ use Drupal\Core\Field\Plugin\Field\FieldType\EntityReferenceItem; */ class EntityReferenceFieldItemList extends FieldItemList implements EntityReferenceFieldItemListInterface { -} \ No newline at end of file + /** + * @return array + */ + public function referencedEntities(); + +}