Project

General

Profile

Bug #11636

Updated by ko1 (Koichi Sasada) over 8 years ago

super in instance_eval in a method defined in a module is invoked with a wrong receiver: 

 ```ruby 
 class Foo 
   def initialize 
     @foo = :foo 
   end 

   def foo 
     p [self, @foo] 
   end 
 end 

 module M 
   def foo 
     x = Object.new 
     x.instance_eval do 
       super 
     end 
   end 
 end 

 class Bar < Foo 
   include M 
 end 

 Bar.new.foo 
 ``` 

 The output should be [#<Foo:...>, :foo] or an exception. 
 Matz prefer the former (https://twitter.com/yukihiro_matz/status/659913844861464576). 

Back