Class: TypeProf::Core::MAsgnBox
- Defined in:
- lib/typeprof/core/graph/box.rb
Instance Attribute Summary collapse
-
#lefts ⇒ Object
readonly
Returns the value of attribute lefts.
-
#node ⇒ Object
readonly
Returns the value of attribute node.
-
#rest_elem ⇒ Object
readonly
Returns the value of attribute rest_elem.
-
#rights ⇒ Object
readonly
Returns the value of attribute rights.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Attributes inherited from Box
Instance Method Summary collapse
- #destroy(genv) ⇒ Object
-
#initialize(node, genv, value, lefts, rest_elem, rights) ⇒ MAsgnBox
constructor
A new instance of MAsgnBox.
- #ret ⇒ Object
- #run0(genv, changes) ⇒ Object
Methods inherited from Box
#on_type_added, #on_type_removed, #reuse, #run, #to_s
Constructor Details
#initialize(node, genv, value, lefts, rest_elem, rights) ⇒ MAsgnBox
Returns a new instance of MAsgnBox.
1048 1049 1050 1051 1052 1053 1054 1055 |
# File 'lib/typeprof/core/graph/box.rb', line 1048 def initialize(node, genv, value, lefts, rest_elem, rights) super(node) @value = value @lefts = lefts @rest_elem = rest_elem @rights = rights @value.add_edge(genv, self) end |
Instance Attribute Details
#lefts ⇒ Object (readonly)
Returns the value of attribute lefts.
1057 1058 1059 |
# File 'lib/typeprof/core/graph/box.rb', line 1057 def lefts @lefts end |
#node ⇒ Object (readonly)
Returns the value of attribute node.
1057 1058 1059 |
# File 'lib/typeprof/core/graph/box.rb', line 1057 def node @node end |
#rest_elem ⇒ Object (readonly)
Returns the value of attribute rest_elem.
1057 1058 1059 |
# File 'lib/typeprof/core/graph/box.rb', line 1057 def rest_elem @rest_elem end |
#rights ⇒ Object (readonly)
Returns the value of attribute rights.
1057 1058 1059 |
# File 'lib/typeprof/core/graph/box.rb', line 1057 def rights @rights end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
1057 1058 1059 |
# File 'lib/typeprof/core/graph/box.rb', line 1057 def value @value end |
Instance Method Details
#destroy(genv) ⇒ Object
1059 1060 1061 1062 |
# File 'lib/typeprof/core/graph/box.rb', line 1059 def destroy(genv) @value.remove_edge(genv, self) # TODO: Is this really needed? super(genv) end |
#ret ⇒ Object
1064 |
# File 'lib/typeprof/core/graph/box.rb', line 1064 def ret = @rhs |
#run0(genv, changes) ⇒ Object
1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 |
# File 'lib/typeprof/core/graph/box.rb', line 1066 def run0(genv, changes) edges = [] @value.each_type do |ty| # TODO: call to_ary? case ty when Type::Array edges.concat(ty.splat_assign(genv, @lefts, @rest_elem, @rights)) else if @lefts.size >= 1 edges << [Source.new(ty), @lefts[0]] elsif @rights.size >= 1 edges << [Source.new(ty), @rights[0]] else edges << [Source.new(ty), @rest_elem] end end end edges.each do |src, dst| changes.add_edge(genv, src, dst) end end |