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

Skip to content

Commit 2602f28

Browse files
[Serializer] Fix self type resolution on promoted constructor parameters
1 parent 6620ed4 commit 2602f28

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

Normalizer/AbstractObjectNormalizer.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
use Symfony\Component\TypeInfo\Type\ObjectType;
4444
use Symfony\Component\TypeInfo\Type\UnionType;
4545
use Symfony\Component\TypeInfo\Type\WrappingTypeInterface;
46+
use Symfony\Component\TypeInfo\TypeContext\TypeContextFactory;
4647
use Symfony\Component\TypeInfo\TypeIdentifier;
4748
use Symfony\Component\TypeInfo\TypeResolver\ReflectionTypeResolver;
4849

@@ -1010,9 +1011,10 @@ protected function denormalizeParameter(\ReflectionClass $class, \ReflectionPara
10101011

10111012
$parameterType = $parameter->getType();
10121013
static $parameterTypeResolver;
1014+
static $parameterTypeContextFactory;
10131015

10141016
if (null !== $parameterType && $parameterTypeResolver ??= class_exists(ReflectionTypeResolver::class) ? new ReflectionTypeResolver() : false) {
1015-
$resolvedParameterType = $parameterTypeResolver->resolve($parameterType);
1017+
$resolvedParameterType = $parameterTypeResolver->resolve($parameterType, ($parameterTypeContextFactory ??= new TypeContextFactory())->createFromClassName($class->name, $parameter->getDeclaringClass()?->name));
10161018
if ($resolvedParameterType->isSatisfiedBy(static fn (Type $t) => match (true) {
10171019
$t instanceof BuiltinType && TypeIdentifier::NULL !== $t->getTypeIdentifier() => !$type->isIdentifiedBy($t->getTypeIdentifier()),
10181020
$t instanceof ObjectType => !$type->isIdentifiedBy($t->getClassName()),

0 commit comments

Comments
 (0)