class Opal::Nodes::TopNode
def compile
def compile compiler.top_scope = self compiler.dynamic_cache_result = true if sexp.meta[:dynamic_cache_result] push version_comment helper :return_val if compiler.eof_content if body == s(:nil) # A shortpath for empty (stub?) modules. if compiler.requirable? || compiler.esm? || compiler.eval? unshift 'Opal.return_val(Opal.nil); ' definition else unshift 'Opal.nil; ' end else in_scope do line '"use strict";' if compiler.use_strict? body_code = in_closure(Closure::JS_FUNCTION | Closure::TOP) do stmt(stmts) end body_code = [body_code] unless body_code.is_a?(Array) if compiler.eval? add_temp '$nesting = self.$$is_a_module ? [self] : [self.$$class]' if @define_nesting else add_temp 'self = Opal.top' if @define_self add_temp '$nesting = []' if @define_nesting end add_temp '$$ = Opal.$r($nesting)' if @define_relative_access add_temp 'nil = Opal.nil' add_temp '$$$ = Opal.$$$' if @define_absolute_const add_used_helpers line scope.to_vars compile_method_stubs compile_irb_vars compile_end_construct line body_code end opening definition closing end add_file_source_embed if compiler.enable_file_source_embed? end