class Opal::Nodes::BaseSuperNode

call.
body. This is then used by actual super calls, or a defined?(super) style
This base class is used just to child the find_super_dispatcher method

def args

def args
  arglist || s(:arglist)
end

def compile_dispatcher

def compile_dispatcher
  if arglist or iter
    iter = expr(iter_sexp)
  else
    scope.uses_block!
    iter = '$iter'
  end
  if scope.def?
    scope.uses_block!
    scope_name = scope.identify!
    class_name = scope.parent.name ? "$#{scope.parent.name}" : 'self.$$class.$$proto'
    if scope.defs
      push "Opal.find_super_dispatcher(self, '#{scope.mid.to_s}', #{scope_name}, "
      push iter
      push ", #{class_name})"
    else
      push "Opal.find_super_dispatcher(self, '#{scope.mid.to_s}', #{scope_name}, "
      push iter
      push ")"
    end
  elsif scope.iter?
    chain, cur_defn, mid = scope.get_super_chain
    trys = chain.map { |c| "#{c}.$$def" }.join(' || ')
    push "Opal.find_iter_super_dispatcher(self, #{mid}, (#{trys} || #{cur_defn}), null)"
  else
    raise "Cannot call super() from outside a method block"
  end
end

def iter_sexp

def iter_sexp
  iter || s(:js_tmp, 'null')
end