class Opal::Nodes::CaseNode

def compile_code

def compile_code
  handled_else = false
  if condition
    case_stmt[:cond] = true
    add_local '$case'
    push '$case = ', expr(condition), ';'
  end
  case_parts.each_with_index do |wen, idx|
    next unless wen
    line
    case wen.type
    when :when
      wen = compiler.returns(wen) if needs_closure?
      push 'else ' unless idx == 0
      push stmt(wen)
    else # s(:else)
      handled_else = true
      wen = compiler.returns(wen) if needs_closure?
      push 'else {', stmt(wen), '}'
    end
  end
  # if we are having a closure, we must return a usable value
  if needs_closure? && !handled_else
    line
    push 'else { return nil }'
  end
end