class Opal::Nodes::EnsureNode

def body_sexp

def body_sexp
  wrap_in_closure? ? compiler.returns(begn) : begn
end

def compile

def compile
  push "try {"
  line compiler.process(body_sexp, @level)
  line "} finally {"
  line compiler.process(ensr_sexp, @level)
  line "}"
  wrap '(function() {', '; })()' if wrap_in_closure?
end

def ensr_sexp

def ensr_sexp
  ensr || s(:nil)
end

def wrap_in_closure?

def wrap_in_closure?
  recv? or expr?
end