class Opal::Nodes::BaseSuperNode
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