diff --git a/src/Reflection/FieldItemListPropertyReflection.php b/src/Reflection/FieldItemListPropertyReflection.php index 53583b43..e62970ba 100644 --- a/src/Reflection/FieldItemListPropertyReflection.php +++ b/src/Reflection/FieldItemListPropertyReflection.php @@ -9,6 +9,7 @@ use PHPStan\Type\ObjectType; use PHPStan\Type\StringType; use PHPStan\Type\Type; +use PHPStan\Type\UnionType; use function in_array; /** @@ -42,7 +43,7 @@ public static function canHandleProperty(ClassReflection $classReflection, strin public function getReadableType(): Type { if ($this->propertyName === 'entity') { - return new ObjectType('Drupal\Core\Entity\EntityInterface'); + return new UnionType([new ObjectType('Drupal\Core\Entity\EntityInterface'), new NullType()]); } if ($this->propertyName === 'target_id') { // @todo needs to be union type. @@ -60,7 +61,7 @@ public function getReadableType(): Type public function getWritableType(): Type { if ($this->propertyName === 'entity') { - return new ObjectType('Drupal\Core\Entity\EntityInterface'); + return new UnionType([new ObjectType('Drupal\Core\Entity\EntityInterface'), new NullType()]); } if ($this->propertyName === 'target_id') { return new StringType(); diff --git a/tests/src/Reflection/EntityFieldsViaMagicReflectionExtensionTest.php b/tests/src/Reflection/EntityFieldsViaMagicReflectionExtensionTest.php index 4b07970b..914cb2c5 100644 --- a/tests/src/Reflection/EntityFieldsViaMagicReflectionExtensionTest.php +++ b/tests/src/Reflection/EntityFieldsViaMagicReflectionExtensionTest.php @@ -13,6 +13,7 @@ use PHPStan\Type\NullType; use PHPStan\Type\ObjectType; use PHPStan\Type\StringType; +use PHPStan\Type\VerbosityLevel; final class EntityFieldsViaMagicReflectionExtensionTest extends PHPStanTestCase { @@ -119,7 +120,7 @@ public function testGetPropertyFieldItemList(): void self::assertInstanceOf(StringType::class, $readableType); $propertyReflection = $this->extension->getProperty($classReflection, 'entity'); $readableType = $propertyReflection->getReadableType(); - self::assertInstanceOf(ObjectType::class, $readableType); + self::assertSame('Drupal\Core\Entity\EntityInterface|null', $readableType->describe(VerbosityLevel::typeOnly())); $propertyReflection = $this->extension->getProperty($classReflection, 'format'); $readableType = $propertyReflection->getReadableType(); self::assertInstanceOf(NullType::class, $readableType);