Skip to content

Commit 3d64f75

Browse files
committed
Add support for recursive types
1 parent d292842 commit 3d64f75

File tree

3 files changed

+8
-1
lines changed

3 files changed

+8
-1
lines changed

Diff for: src/Type/Symfony/SerializerInterfaceDynamicReturnTypeExtension.php

+6-1
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,14 @@ public function getTypeFromMethodCall(MethodReflection $methodReflection, Method
3434

3535
$objectName = $argType->getValue();
3636

37+
return $this->getType($objectName);
38+
}
39+
40+
private function getType(string $objectName): Type
41+
{
3742
if (substr($objectName, -2) === '[]') {
3843
// The key type is determined by the data
39-
return new ArrayType(new MixedType(false), new ObjectType(substr($objectName, 0, -2)));
44+
return new ArrayType(new MixedType(false), $this->getType(substr($objectName, 0, -2)));
4045
}
4146

4247
return new ObjectType($objectName);

Diff for: tests/Type/Symfony/SerializerInterfaceDynamicReturnTypeExtensionTest.php

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public function getContentProvider(): Iterator
2424
{
2525
yield ['$first', 'Bar'];
2626
yield ['$second', 'array<Bar>'];
27+
yield ['$third', 'array<array<Bar>>'];
2728
}
2829

2930
}

Diff for: tests/Type/Symfony/serializer.php

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@
44

55
$first = $serializer->deserialize('bar', 'Bar', 'format');
66
$second = $serializer->deserialize('bar', 'Bar[]', 'format');
7+
$third = $serializer->deserialize('bar', 'Bar[][]', 'format');
78

89
die;

0 commit comments

Comments
 (0)