diff --git a/Internal/Inheritance/ClassInheritance.php b/Internal/Inheritance/ClassInheritance.php index be4fb33..adf490f 100644 --- a/Internal/Inheritance/ClassInheritance.php +++ b/Internal/Inheritance/ClassInheritance.php @@ -20,7 +20,6 @@ use Typhoon\Type\TypeVisitor; use Typhoon\Type\Visitor\RelativeClassTypeResolver; use Typhoon\Type\Visitor\TemplateTypeResolver; -use Typhoon\Type\Visitor\TypeResolvers; use Typhoon\TypedMap\TypedMap; /** diff --git a/Internal/Inheritance/TypeResolvers.php b/Internal/Inheritance/TypeResolvers.php new file mode 100644 index 0000000..8798c04 --- /dev/null +++ b/Internal/Inheritance/TypeResolvers.php @@ -0,0 +1,33 @@ + + */ +final class TypeResolvers extends DefaultTypeVisitor +{ + /** + * @param iterable> $resolvers + */ + public function __construct( + private readonly iterable $resolvers = [], + ) {} + + protected function default(Type $type): mixed + { + foreach ($this->resolvers as $resolver) { + $type = $type->accept($resolver); + } + + return $type; + } +}