class Steep::AST::Builtin::Type
def initialize(module_name, arity: 0)
def initialize(module_name, arity: 0) @module_name = TypeName(module_name) @arity = arity end
def instance_type(*args, fill_untyped: false)
def instance_type(*args, fill_untyped: false) if fill_untyped (arity - args.size).times do args << Builtin.any_type end end arity == args.size or raise "Malformed instance type: name=#{module_name}, args=#{args}" Types::Name::Instance.new(name: module_name, args: args) end
def instance_type?(type, args: nil)
def instance_type?(type, args: nil) if type.is_a?(Types::Name::Instance) if args arity == args.size or raise "Malformed instance type: name=#{module_name}, args=#{args}" if type.name == module_name && type.args == args type end else if type.name == module_name && type.args.size == arity type end end end end
def module_type
def module_type Types::Name::Singleton.new(name: module_name) end
def module_type?(type)
def module_type?(type) if type.is_a?(Types::Name::Singleton) if type.name == module_name type end end end