From: usa@... Date: 2014-06-23T09:47:48+00:00 Subject: [ruby-core:63294] [ruby-trunk - Bug #9740] super: no superclass method in Ruby 2.1.1 Issue #9740 has been updated by Usaku NAKAMURA. Backport changed from 2.0.0: REQUIRED, 2.1: DONE to 2.0.0: DONE, 2.1: DONE and also already backported into `ruby_2_0_0` at r46157. ---------------------------------------- Bug #9740: super: no superclass method in Ruby 2.1.1 https://bugs.ruby-lang.org/issues/9740#change-47343 * Author: Wei Hu * Status: Closed * Priority: Normal * Assignee: * Category: core * Target version: current: 2.2.0 * ruby -v: ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux] * Backport: 2.0.0: DONE, 2.1: DONE ---------------------------------------- Below code will result into error: ~~~ super: no superclass method `foo' for # ~~~ However, it can pass with Ruby 1.9 and I am not sure if it's feature changes or bug. ~~~ruby module A def foo puts "A" end end module B def foo puts "B" super end ub_meth = instance_method :foo define_method :foo do ub_meth.bind(self).call() end end a = Object.new a.extend A a.extend B a.foo ~~~ Hi, Nakada, Thanks for your fix @ r45565, but this still has problem. If we run my original example, it will result into: ~~~ B B B t.rb:9: stack level too deep (SystemStackError) ~~~ I think the difference is: in the original example, I used `define_method :foo` to override the foo in Module `B`. -- https://bugs.ruby-lang.org/