From 89cfc5a35412646ccafd8d8ed4fd4f384bbf1488 Mon Sep 17 00:00:00 2001 From: DerManoMann Date: Tue, 3 Feb 2026 09:47:04 +1300 Subject: [PATCH 1/3] Add support for `ObjectShapeType` --- src/TypeResolver/StringTypeResolver.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/TypeResolver/StringTypeResolver.php b/src/TypeResolver/StringTypeResolver.php index 8d5ff17..064a628 100644 --- a/src/TypeResolver/StringTypeResolver.php +++ b/src/TypeResolver/StringTypeResolver.php @@ -125,7 +125,17 @@ private function getTypeFromNode(TypeNode $node, ?TypeContext $typeContext): Bas } if ($node instanceof ObjectShapeNode) { - return Type::object(); + $shape = []; + foreach ($node->items as $item) { + $shape[(string) $item->keyName] = [ + 'type' => $this->getTypeFromNode($item->valueType, $typeContext), + 'optional' => $item->optional, + ]; + } + + return ($shape && method_exists(Type::class, 'objectShape')) + ? Type::objectShape($shape) + : Type::object(); } if ($node instanceof ThisTypeNode) { From 8a1eb133439b1f5a3c5fba01bf5d15265130e8bd Mon Sep 17 00:00:00 2001 From: DerManoMann Date: Tue, 3 Feb 2026 09:53:46 +1300 Subject: [PATCH 2/3] . --- src/Type/ExplicitType.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Type/ExplicitType.php b/src/Type/ExplicitType.php index 9adbe76..a067fee 100644 --- a/src/Type/ExplicitType.php +++ b/src/Type/ExplicitType.php @@ -8,7 +8,7 @@ /** * A special type of `BuiltinType` for when a more specific type exits. * - * When using this library either code would have to check for `BuiltinType|ExplicitType` or just rely on `Type::getTypeIdentifier()`. + * When using this library, either code would have to check for `BuiltinType|ExplicitType` or just rely on `Type::getTypeIdentifier()`. * * @template T of TypeIdentifier */ From 6e6d9735757287e38cb73d1720508fe228323076 Mon Sep 17 00:00:00 2001 From: DerManoMann Date: Sat, 7 Feb 2026 12:03:07 +1300 Subject: [PATCH 3/3] Add type-info 8.1-@dev to deps --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 70b2221..e672221 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ "require": { "php": ">=8.2", "phpstan/phpdoc-parser": "^2.0", - "symfony/type-info": "^7.3.8 || ^7.4.1 || ^8.0" + "symfony/type-info": "^7.3.8 || ^7.4.1 || ^8.0 || ^8.1-@dev" }, "autoload": { "psr-4": { "Radebatz\\TypeInfoExtras\\": "src" },