Project

General

Profile

Bug #9377

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

=begin 
 Seg fault on call of missing super from self.extended in a Module 
 on 2.1.0-p0 and on 2.1.0-dev 
 x86_64 linux 

 Code to reproduce: 

  

 ``` 
 module A 
    
   def foo; super end 

    
  
   def self.extended(obj) 
      
     instance_method(:foo).bind(obj).call 
    
   end 
  
 end 

  

 Object.new.extend A 

 
 ``` 
 (stack trace is attached) 

 Note that calling from after extend is okay: (but raises missing super error) 

  

 ``` 
 module A 
    
   def foo; super end 
  
 end 

  

 Object.new.extend(A).foo #=> in `foo': super: no superclass method `foo' for #<Object:0x007fabf43d2730> (NoMethodError) 
 ``` 

 Also note that calling from within the extend as before, but having the method defined is also okay (and raises no error) 

  

 ``` 
 module ABase 
    
   def foo; end 
  
 end 

  

 module A 
    
   include ABase 
    
   def foo; super end 

    
  
   def self.extended(obj) 
      
     instance_method(:foo).bind(obj).call 
    
   end 
  
 end 

  

 Object.new.extend A 
 =end 
 ```

Back