class Opal::Nodes::ClassNode

def body_code

def body_code
  stmt(compiler.returns(body || s(:nil)))
end

def compile

def compile
  name, base = name_and_base
  helper :klass
  push "(function($base, $super) {"
  line "  function $#{name}(){};"
  line "  var self = $#{name} = $klass($base, $super, '#{name}', $#{name});"
  in_scope do
    scope.name = name
    add_temp "#{scope.proto} = self.$$proto"
    add_temp "$scope = self.$$scope"
    body_code = self.body_code
    empty_line
    line scope.to_vars
    line body_code
  end
  line "})(", base, ", ", self.super_code, ")"
end

def super_code

def super_code
  sup ? expr(sup) : 'null'
end