Class: Steep::AST::Builtin::Type
- Inherits:
-
Object
- Object
- Steep::AST::Builtin::Type
- Defined in:
- lib/steep/ast/builtin.rb
Constant Summary collapse
- NONE =
::Object.new
Instance Attribute Summary collapse
-
#arity ⇒ Object
readonly
Returns the value of attribute arity.
-
#module_name ⇒ Object
readonly
Returns the value of attribute module_name.
Instance Method Summary collapse
- #class_type(constructor: nil) ⇒ Object
- #class_type?(type, constructor: NONE) ⇒ Boolean
-
#initialize(module_name, arity: 0) ⇒ Type
constructor
A new instance of Type.
- #instance_type(*args) ⇒ Object
- #instance_type?(type, args: nil) ⇒ Boolean
- #module_type ⇒ Object
- #module_type?(type) ⇒ Boolean
Constructor Details
Instance Attribute Details
#arity ⇒ Object (readonly)
Returns the value of attribute arity.
6 7 8 |
# File 'lib/steep/ast/builtin.rb', line 6 def arity @arity end |
#module_name ⇒ Object (readonly)
Returns the value of attribute module_name.
5 6 7 |
# File 'lib/steep/ast/builtin.rb', line 5 def module_name @module_name end |
Instance Method Details
#class_type(constructor: nil) ⇒ Object
18 19 20 |
# File 'lib/steep/ast/builtin.rb', line 18 def class_type(constructor: nil) Types::Name::Class.new(name: module_name, constructor: constructor) end |
#class_type?(type, constructor: NONE) ⇒ Boolean
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/steep/ast/builtin.rb', line 41 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 |
#instance_type(*args) ⇒ Object
13 14 15 16 |
# File 'lib/steep/ast/builtin.rb', line 13 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 |
#instance_type?(type, args: nil) ⇒ Boolean
26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/steep/ast/builtin.rb', line 26 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 |