Skip to content

Commit

Permalink
Fix type extractors
Browse files Browse the repository at this point in the history
  • Loading branch information
jordisala1991 committed Oct 18, 2024
1 parent 74e3185 commit 8298060
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 18 deletions.
16 changes: 3 additions & 13 deletions src/Serializer/BlockTypeExtractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,6 @@
use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
use Symfony\Component\PropertyInfo\Type as LegacyType;
use Symfony\Component\TypeInfo\Type;
use Symfony\Component\TypeInfo\Type\BuiltinType;
use Symfony\Component\TypeInfo\Type\UnionType;
use Symfony\Component\TypeInfo\TypeIdentifier;

final class BlockTypeExtractor implements PropertyTypeExtractorInterface
{
Expand Down Expand Up @@ -75,20 +72,13 @@ public function getType(string $class, string $property, array $context = []): ?
return null;
}
if ('position' === $property) {
return new UnionType(
new BuiltinType(TypeIdentifier::INT),
new BuiltinType(TypeIdentifier::STRING),
);
return Type::nullable(Type::union(Type::int(), Type::string()));
}
if ('enabled' === $property) {
return new UnionType(
new BuiltinType(TypeIdentifier::BOOL),
new BuiltinType(TypeIdentifier::INT),
new BuiltinType(TypeIdentifier::STRING),
);
return Type::nullable(Type::union(Type::bool(), Type::int(), Type::string()));
}
if (\in_array($property, self::NULLABLE_STRINGS, true)) {
return new BuiltinType(TypeIdentifier::STRING);
return Type::nullable(Type::string());
}

return null;
Expand Down
9 changes: 4 additions & 5 deletions src/Serializer/InterfaceTypeExtractor.php
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
use Symfony\Component\PropertyInfo\PropertyTypeExtractorInterface;
use Symfony\Component\PropertyInfo\Type as LegacyType;
use Symfony\Component\TypeInfo\Type;
use Symfony\Component\TypeInfo\Type\ObjectType;

final class InterfaceTypeExtractor implements PropertyTypeExtractorInterface
{
Expand Down Expand Up @@ -86,17 +85,17 @@ public function getType(string $class, string $property, array $context = []): ?
{
if ($this->pageClass === $class) {
if ('children' === $property) {
return new ObjectType($this->pageClass);
return Type::collection(Type::object($this->pageClass));

Check failure on line 88 in src/Serializer/InterfaceTypeExtractor.php

View workflow job for this annotation

GitHub Actions / Psalm

InvalidArgument

src/Serializer/InterfaceTypeExtractor.php:88:41: InvalidArgument: Argument 1 of Symfony\Component\TypeInfo\Type::collection expects Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\GenericType<Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\ObjectType>|Symfony\Component\TypeInfo\Type\ObjectType<class-string>, but Symfony\Component\TypeInfo\Type\ObjectType<class-string<Sonata\PageBundle\Model\PageInterface>> provided (see https://psalm.dev/004)
}
if ('blocks' === $property) {
return new ObjectType($this->blockClass);
return Type::collection(Type::object($this->blockClass));

Check failure on line 91 in src/Serializer/InterfaceTypeExtractor.php

View workflow job for this annotation

GitHub Actions / Psalm

InvalidArgument

src/Serializer/InterfaceTypeExtractor.php:91:41: InvalidArgument: Argument 1 of Symfony\Component\TypeInfo\Type::collection expects Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\GenericType<Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\ObjectType>|Symfony\Component\TypeInfo\Type\ObjectType<class-string>, but Symfony\Component\TypeInfo\Type\ObjectType<class-string<Sonata\BlockBundle\Model\BlockInterface>> provided (see https://psalm.dev/004)
}
if ('parent' === $property) {
return new ObjectType($this->pageClass);
return Type::collection(Type::object($this->pageClass));

Check failure on line 94 in src/Serializer/InterfaceTypeExtractor.php

View workflow job for this annotation

GitHub Actions / Psalm

InvalidArgument

src/Serializer/InterfaceTypeExtractor.php:94:41: InvalidArgument: Argument 1 of Symfony\Component\TypeInfo\Type::collection expects Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\GenericType<Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\ObjectType>|Symfony\Component\TypeInfo\Type\ObjectType<class-string>, but Symfony\Component\TypeInfo\Type\ObjectType<class-string<Sonata\PageBundle\Model\PageInterface>> provided (see https://psalm.dev/004)
}
} elseif ($this->blockClass === $class) {
if ('children' === $property) {
return new ObjectType($this->blockClass);
return Type::collection(Type::object($this->blockClass));

Check failure on line 98 in src/Serializer/InterfaceTypeExtractor.php

View workflow job for this annotation

GitHub Actions / Psalm

InvalidArgument

src/Serializer/InterfaceTypeExtractor.php:98:41: InvalidArgument: Argument 1 of Symfony\Component\TypeInfo\Type::collection expects Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\GenericType<Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ARRAY)>|Symfony\Component\TypeInfo\Type\BuiltinType<enum(Symfony\Component\TypeInfo\TypeIdentifier::ITERABLE)>|Symfony\Component\TypeInfo\Type\ObjectType>|Symfony\Component\TypeInfo\Type\ObjectType<class-string>, but Symfony\Component\TypeInfo\Type\ObjectType<class-string<Sonata\BlockBundle\Model\BlockInterface>> provided (see https://psalm.dev/004)
}
}

Expand Down

0 comments on commit 8298060

Please sign in to comment.