Thanks to visit codestin.com
Credit goes to github.com

Skip to content

[TypeInfo] Cannot create union with "mixed" standalone type. #59258

Closed
@ToshY

Description

@ToshY

Symfony version(s) affected

7.2.1

Description

When (indirectly) upgrading symfony/type-info from 7.1.8 to 7.2.1 (due to symfony/type-info: "^7.1" in symfony/property-info), it gives an error regarding UnionType:

In UnionType.php line 54:

  [Symfony\Component\TypeInfo\Exception\InvalidArgumentException]
  Cannot create union with "mixed" standalone type.

Exception trace:
  at /app/vendor/symfony/type-info/Type/UnionType.php:54
 Symfony\Component\TypeInfo\Type\UnionType->__construct() at /app/vendor/symfony/type-info/TypeFactoryTrait.php:296
 Symfony\Component\TypeInfo\Type::union() at /app/vendor/symfony/type-info/TypeResolver/StringTypeResolver.php:226
 Symfony\Component\TypeInfo\TypeResolver\StringTypeResolver->getTypeFromNode() at /app/vendor/symfony/type-info/TypeResolver/StringTypeResolver.php:192
 Symfony\Component\TypeInfo\TypeResolver\StringTypeResolver->Symfony\Component\TypeInfo\TypeResolver\{closure}() at n/a:n/a
 array_map() at /app/vendor/symfony/type-info/TypeResolver/StringTypeResolver.php:192
 Symfony\Component\TypeInfo\TypeResolver\StringTypeResolver->getTypeFromNode() at /app/vendor/symfony/type-info/TypeResolver/StringTypeResolver.php:86
 Symfony\Component\TypeInfo\TypeResolver\StringTypeResolver->resolve() at /app/vendor/symfony/property-info/Extractor/PhpStanExtractor.php:217
 Symfony\Component\PropertyInfo\Extractor\PhpStanExtractor->getType() at /app/vendor/symfony/property-info/PropertyInfoExtractor.php:96
 Symfony\Component\PropertyInfo\PropertyInfoExtractor->extract() at /app/vendor/symfony/property-info/PropertyInfoExtractor.php:62
 Symfony\Component\PropertyInfo\PropertyInfoExtractor->getType() at /app/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:992
 Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->getPropertyType() at /app/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:962
 Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->getType() at /app/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:929
 Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->denormalizeParameter() at /app/vendor/symfony/serializer/Normalizer/AbstractNormalizer.php:374
 Symfony\Component\Serializer\Normalizer\AbstractNormalizer->instantiateObject() at /app/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:243
 Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->instantiateObject() at /app/vendor/symfony/serializer/Normalizer/AbstractObjectNormalizer.php:339
 Symfony\Component\Serializer\Normalizer\AbstractObjectNormalizer->denormalize() at /app/vendor/guikingone/scheduler-bundle/src/Serializer/TaskNormalizer.php:289
 SchedulerBundle\Serializer\TaskNormalizer->denormalize() at /app/vendor/symfony/serializer/Serializer.php:238
 Symfony\Component\Serializer\Serializer->denormalize() at /app/vendor/symfony/serializer/Serializer.php:143
 Symfony\Component\Serializer\Serializer->deserialize() at /app/vendor/guikingone/scheduler-bundle/src/Transport/CacheTransport.php:70
 SchedulerBundle\Transport\CacheTransport->get() at /app/vendor/guikingone/scheduler-bundle/src/Scheduler.php:76
 SchedulerBundle\Scheduler->schedule() at /app/var/cache/dev/ContainerSU4h0yA/App_KernelDevDebugContainer.php:24286
 ContainerSU4h0yA\App_KernelDevDebugContainer::getSchedulerService() at /app/var/cache/dev/ContainerSU4h0yA/App_KernelDevDebugContainer.php:13641
 ContainerSU4h0yA\App_KernelDevDebugContainer::getConsumeTasksCommandService() at /app/var/cache/dev/ContainerSU4h0yA/App_KernelDevDebugContainer.php:5245
 ContainerSU4h0yA\App_KernelDevDebugContainer::ContainerSU4h0yA\{closure}() at /app/vendor/symfony/console/Command/LazyCommand.php:189
 Symfony\Component\Console\Command\LazyCommand->getCommand() at /app/vendor/symfony/console/Application.php:338
 Symfony\Component\Console\Application->doRun() at /app/vendor/symfony/framework-bundle/Console/Application.php:77
 Symfony\Bundle\FrameworkBundle\Console\Application->doRun() at /app/vendor/symfony/console/Application.php:193
 Symfony\Component\Console\Application->run() at /app/bin/console:43

How to reproduce

I'm using guikingone/scheduler-bundle, and after debugging in the PropertyInfoExtractor, I've found that it might be related to the annotation for the $options there:

    /**
     * @var array<string, mixed|bool|string|float|int|DateTimeImmutable|DateTimeZone|DateInterval|NotificationTaskBag|null>
     */
    protected array $options = [];

https://github.com/Guikingone/SchedulerBundle/blob/b247c1630c365600cfd4916cf16b1452ce00ad84/src/Task/AbstractTask.php#L39-L41

Possible Solution

No response

Additional Context

Related: symfony/type-info@f8ee4b9
Workaround: use 7.1.8; composer require symfony/type-info:7.1.*

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions