class TypeProf::Core::EscapeBox::HashSplatBox::MAsgnBox
Attributes
lefts[R]
node[R]
rest_elem[R]
rights[R]
value[R]
Public Class Methods
new(node, genv, value, lefts, rest_elem, rights)
click to toggle source
Calls superclass method
TypeProf::Core::Box::new
# File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 958 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
Public Instance Methods
destroy(genv)
click to toggle source
Calls superclass method
TypeProf::Core::Box#destroy
# File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 969 def destroy(genv) @value.remove_edge(genv, self) # TODO: Is this really needed? super(genv) end
ret(= @rhs)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 974 def ret = @rhs 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 end
run0(genv, changes)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/graph/box.rb, line 976 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