class TypeProf::Core::AST::StatementsNode
Attributes
Public Class Methods
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/misc.rb, line 4 def initialize(raw_node, lenv, use_result) super(raw_node, lenv) stmts = raw_node.body @stmts = stmts.map.with_index do |n, i| if n AST.create_node(n, lenv, i == stmts.length - 1 ? use_result : false) else last = code_range.last DummyNilNode.new(TypeProf::CodeRange.new(last, last), lenv) end end end
Calls superclass method
TypeProf::Core::AST::Node::new
Public Instance Methods
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/misc.rb, line 54 def diff(prev_node) if prev_node.is_a?(StatementsNode) i = 0 while i < @stmts.size @stmts[i].diff(prev_node.stmts[i]) if !@stmts[i].prev_node j1 = @stmts.size - 1 j2 = prev_node.stmts.size - 1 while j1 >= i && j2 >= i @stmts[j1].diff(prev_node.stmts[j2]) if !@stmts[j1].prev_node return end j1 -= 1 j2 -= 1 end return end i += 1 end @prev_node = prev_node if i == prev_node.stmts.size end end
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/misc.rb, line 21 def install0(genv) ret = nil post_stmts = [] @stmts.each do |stmt| next if stmt.nil? if stmt.is_a?(PostExecutionNode) post_stmts << stmt next end ret = stmt.install(genv) end post_stmts.each do |stmt| stmt.install(genv) end if ret ret2 = Vertex.new(self) @changes.add_edge(genv, ret, ret2) ret2 else Source.new(genv.nil_type) end end
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/misc.rb, line 50 def narrowings @stmts.size == 1 ? @stmts[0].narrowings : super end
Calls superclass method
TypeProf::Core::AST::Node#narrowings
Source
# File bundled-src/typeprof-0.31.1/lib/typeprof/core/ast/misc.rb, line 19 def subnodes = { stmts: } def install0(genv) ret = nil post_stmts = [] @stmts.each do |stmt| next if stmt.nil? if stmt.is_a?(PostExecutionNode) post_stmts << stmt next end ret = stmt.install(genv) end post_stmts.each do |stmt| stmt.install(genv) end if ret ret2 = Vertex.new(self) @changes.add_edge(genv, ret, ret2) ret2 else Source.new(genv.nil_type) end end def narrowings @stmts.size == 1 ? @stmts[0].narrowings : super end def diff(prev_node) if prev_node.is_a?(StatementsNode) i = 0 while i < @stmts.size @stmts[i].diff(prev_node.stmts[i]) if !@stmts[i].prev_node j1 = @stmts.size - 1 j2 = prev_node.stmts.size - 1 while j1 >= i && j2 >= i @stmts[j1].diff(prev_node.stmts[j2]) if !@stmts[j1].prev_node return end j1 -= 1 j2 -= 1 end return end i += 1 end @prev_node = prev_node if i == prev_node.stmts.size end end end