class TypeProf::Core::AST::StatementsNode::MultiWriteNode::MatchWriteNode::DefinedNode::SplatNode
Attributes
expr[R]
Public Class Methods
new(raw_node, lenv)
click to toggle source
Calls superclass method
TypeProf::Core::AST::Node::new
# File typeprof-0.30.1/lib/typeprof/core/ast/misc.rb, line 168 def initialize(raw_node, lenv) super(raw_node, lenv) @expr = AST.create_node(raw_node.expression, lenv) end
Public Instance Methods
install0(genv)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/misc.rb, line 179 def install0(genv) vtx = @expr.install(genv) a_args = ActualArguments.new([], [], nil, nil) vtx = @changes.add_method_call_box(genv, vtx, :to_a, a_args, false).ret @changes.add_splat_box(genv, vtx).ret end
mid_code_range(= nil)
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/misc.rb, line 177 def mid_code_range = nil def install0(genv) vtx = @expr.install(genv) a_args = ActualArguments.new([], [], nil, nil) vtx = @changes.add_method_call_box(genv, vtx, :to_a, a_args, false).ret @changes.add_splat_box(genv, vtx).ret end end
subnodes(= { expr: })
click to toggle source
# File typeprof-0.30.1/lib/typeprof/core/ast/misc.rb, line 175 def subnodes = { expr: } def mid_code_range = nil def install0(genv) vtx = @expr.install(genv) a_args = ActualArguments.new([], [], nil, nil) vtx = @changes.add_method_call_box(genv, vtx, :to_a, a_args, false).ret @changes.add_splat_box(genv, vtx).ret end end class ForNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) # XXX: tentative implementation # raw_node.index @expr = AST.create_node(raw_node.collection, lenv) @body = raw_node.statements ? AST.create_node(raw_node.statements, lenv) : DummyNilNode.new(TypeProf::CodeRange.new(code_range.last, code_range.last), lenv) end attr_reader :expr, :body def subnodes = { expr:, body: } def install0(genv) @expr.install(genv) @body.install(genv) Source.new(genv.nil_type) end end class FlipFlopNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @e1 = AST.create_node(raw_node.left, lenv) @e2 = AST.create_node(raw_node.right, lenv) end attr_reader :e1, :e2 def subnodes = { e1:, e2: } def install0(genv) @e1.install(genv) @e2.install(genv) Source.new(genv.true_type, genv.false_type) end end class MatchRequiredNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @value = AST.create_node(raw_node.value, lenv) @pat = AST.create_pattern_node(raw_node.pattern, lenv) end attr_reader :value, :pat def subnodes = { value:, pat: } def install0(genv) @value.install(genv) @pat.install(genv) Source.new(genv.nil_type) end end class MatchPreidcateNode < Node def initialize(raw_node, lenv) super(raw_node, lenv) @value = AST.create_node(raw_node.value, lenv) @pat = AST.create_pattern_node(raw_node.pattern, lenv) end attr_reader :value, :pat def subnodes = { value:, pat: } def install0(genv) @value.install(genv) @pat.install(genv) Source.new(genv.true_type, genv.false_type) end