class Opal::Nodes::ReturnNode
def compile
def compile if def_scope = scope_to_catch_return def_scope.catch_return = true push 'Opal.ret(', return_val, ')' elsif stmt? push 'return ', return_val else error 'void value expression: cannot return as an expression' end end
def return_expr_in_def?
def return_expr_in_def? return scope if expr? && (scope.def? || scope.lambda?) end
def return_in_iter?
def return_in_iter? if (scope.iter? && !scope.lambda?) && parent_def = scope.find_parent_def parent_def end end
def return_val
def return_val if value.nil? expr(s(:nil)) elsif children.size > 1 expr(s(:array, *children)) else expr(value) end end
def scope_to_catch_return
def scope_to_catch_return return_in_iter? || return_expr_in_def? end