module T::Utils
def self.coerce(val)
def self.coerce(val) if val.is_a?(T::Private::Types::TypeAlias) val.aliased_type elsif val.is_a?(T::Types::Base) val elsif val.is_a?(Module) T::Types::Simple::Private::Pool.type_for_module(val) elsif val.is_a?(::Array) T::Types::FixedArray.new(val) elsif val.is_a?(::Hash) T::Types::FixedHash.new(val) elsif val.is_a?(T::Private::Methods::DeclBuilder) T::Private::Methods.finalize_proc(val.decl) elsif val.is_a?(::T::Enum) T::Types::TEnum.new(val) elsif val.is_a?(::String) raise "Invalid String literal for type constraint. Must be an #{T::Types::Base}, a " \ "class/module, or an array. Got a String with value `#{val}`." else raise "Invalid value for type constraint. Must be an #{T::Types::Base}, a " \ "class/module, or an array. Got a `#{val.class}`." end end