Method: TypeProf::Core::AST::CaseNode#initialize

Defined in:
lib/typeprof/core/ast/control.rb

#initialize(raw_node, lenv) ⇒ CaseNode

Returns a new instance of CaseNode.



306
307
308
309
310
311
312
313
314
315
# File 'lib/typeprof/core/ast/control.rb', line 306

def initialize(raw_node, lenv)
  super(raw_node, lenv)
  @pivot = raw_node.predicate ? AST.create_node(raw_node.predicate, lenv) : nil

  # pivot変数名を決定
  pivot_var = @pivot.is_a?(LocalVariableReadNode) ? @pivot.var : nil

  @when_nodes = raw_node.conditions.map {|raw_cond| WhenNode.new(raw_cond, lenv, pivot_var) }
  @else_clause = raw_node.else_clause && raw_node.else_clause.statements ? AST.create_node(raw_node.else_clause.statements, lenv) : DummyNilNode.new(code_range, lenv) # TODO: code_range for NilNode
end