class Opal::Nodes::IfNode

def compile

def compile
  truthy = self.truthy
  falsy = self.falsy
  push 'if (', js_truthy(test), ') {'
  # skip if-body if no truthy sexp
  indent { line stmt(truthy) } if truthy
  if falsy
    if falsy.type == :if
      line '} else ', stmt(falsy)
    else
      line '} else {'
      indent do
        line stmt(falsy)
      end
      line '}'
    end
  else
    push '}'
  end
  if needs_wrapper?
    if scope.await_encountered
      wrap '(await (async function() {', '; return nil; })())'
    else
      wrap '(function() {', '; return nil; })()'
    end
  end
end

def falsy

def falsy
  needs_wrapper? ? compiler.returns(false_body || s(:nil)) : false_body
end

def needs_wrapper?

def needs_wrapper?
  expr? || recv?
end

def truthy

def truthy
  needs_wrapper? ? compiler.returns(true_body || s(:nil)) : true_body
end