Class: Steep::AST::Types::Var
- Includes:
- Helper::NoChild
- Defined in:
- lib/steep/ast/types/var.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Class Method Summary collapse
Instance Method Summary collapse
- #==(other) ⇒ Object (also: #eql?)
- #free_variables ⇒ Object
- #hash ⇒ Object
-
#initialize(name:) ⇒ Var
constructor
A new instance of Var.
- #level ⇒ Object
- #subst(s) ⇒ Object
- #to_s ⇒ Object
- #update(name: self.name) ⇒ Object
Methods included from Helper::NoChild
Constructor Details
#initialize(name:) ⇒ Var
Returns a new instance of Var.
7 8 9 |
# File 'lib/steep/ast/types/var.rb', line 7 def initialize(name:) @name = name end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
5 6 7 |
# File 'lib/steep/ast/types/var.rb', line 5 def name @name end |
Class Method Details
.fresh(name, location: nil) ⇒ Object
33 34 35 |
# File 'lib/steep/ast/types/var.rb', line 33 def self.fresh(name, location: nil) new(name: fresh_name(name)) end |
.fresh_name(name) ⇒ Object
22 23 24 25 26 27 28 29 30 31 |
# File 'lib/steep/ast/types/var.rb', line 22 def self.fresh_name(name) @mutex ||= Thread::Mutex.new @mutex.synchronize do @max ||= 0 @max += 1 :"#{name}(#{@max})" end end |
Instance Method Details
#==(other) ⇒ Object Also known as: eql?
11 12 13 14 |
# File 'lib/steep/ast/types/var.rb', line 11 def ==(other) other.is_a?(Var) && other.name == name end |
#free_variables ⇒ Object
49 50 51 |
# File 'lib/steep/ast/types/var.rb', line 49 def free_variables() @fvs ||= Set.new([name]) end |
#hash ⇒ Object
16 17 18 |
# File 'lib/steep/ast/types/var.rb', line 16 def hash self.class.hash ^ name.hash end |
#level ⇒ Object
55 56 57 |
# File 'lib/steep/ast/types/var.rb', line 55 def level [0] end |
#subst(s) ⇒ Object
41 42 43 44 45 46 47 |
# File 'lib/steep/ast/types/var.rb', line 41 def subst(s) if s.key?(name) s[name] else self end end |
#to_s ⇒ Object
37 38 39 |
# File 'lib/steep/ast/types/var.rb', line 37 def to_s name.to_s end |
#update(name: self.name) ⇒ Object
59 60 61 |
# File 'lib/steep/ast/types/var.rb', line 59 def update(name: self.name) self.class.new(name: name) end |