class Steep::AST::Builtin::Type
def class_type(constructor: nil)
def class_type(constructor: nil) Types::Name::Class.new(name: module_name, constructor: constructor) end
def class_type?(type, constructor: NONE)
def class_type?(type, constructor: NONE) if type.is_a?(Types::Name::Class) unless constructor.equal?(NONE) type.name == module_name && type.name.constructor == constructor else type.name == module_name end else false end end
def initialize(module_name, arity: 0)
def initialize(module_name, arity: 0) @module_name = Names::Module.parse(module_name) @arity = arity end
def instance_type(*args)
def instance_type(*args) arity == args.size or raise "Mulformed 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 "Mulformed instance type: name=#{module_name}, args=#{args}" type.name == module_name && type.args == args else type.name == module_name && type.args.size == arity end else false end end
def module_type
def module_type Types::Name::Module.new(name: module_name) end
def module_type?(type)
def module_type?(type) if type.is_a?(Types::Name::Module) type.name == module_name else false end end