class TypeProf::Core::AST::BranchNode::LoopNode::BreakNode::NextNode::CaseNode::CaseMatchNode - typeprof: Ruby Standard Library Documentation

# class TypeProf::Core::AST::BranchNode::LoopNode::BreakNode::NextNode::CaseNode::CaseMatchNode

### Attributes

clauses[R]
else_clause[R]
patterns[R]
pivot[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/control.rb, line 266
    def initialize(raw_node, lenv)
      super(raw_node, lenv)
      @pivot = AST.create_node(raw_node.predicate, lenv)
      @patterns = []
      @clauses = []
      raw_node.conditions.each do |raw_cond|
        raise if raw_cond.type != :in_node
        @patterns << AST.create_pattern_node(raw_cond.pattern, lenv)
        @clauses << (raw_cond.statements ? AST.create_node(raw_cond.statements, lenv) : DummyNilNode.new(code_range, lenv)) # TODO: code_range for NilNode
      end
      @else_clause = raw_node.else_clause && raw_node.else_clause.statements ? AST.create_node(raw_node.else_clause.statements, lenv) : nil
    end

### Public Instance Methods

install0(genv) click to toggle source

    # File typeprof-0.30.1/lib/typeprof/core/ast/control.rb, line 283
    def install0(genv)
      ret = Vertex.new(self)
      @pivot&.install(genv)
      @patterns.zip(@clauses) do |pattern, clause|
        pattern.install(genv)
        @changes.add_edge(genv, clause.install(genv), ret)
      end
      @changes.add_edge(genv, @else_clause.install(genv), ret) if @else_clause
      ret
    end

subnodes(= { pivot:, patterns:, clauses:, else_clause: }) click to toggle source

    # File typeprof-0.30.1/lib/typeprof/core/ast/control.rb, line 281
      def subnodes = { pivot:, patterns:, clauses:, else_clause: }

      def install0(genv)
        ret = Vertex.new(self)
        @pivot&.install(genv)
        @patterns.zip(@clauses) do |pattern, clause|
          pattern.install(genv)
          @changes.add_edge(genv, clause.install(genv), ret)
        end
        @changes.add_edge(genv, @else_clause.install(genv), ret) if @else_clause
        ret
      end
    end