Project

General

Profile

Bug #9377

Updated by nobu (Nobuyoshi Nakada) about 10 years ago

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

 Code to reproduce: 

 ```ruby 
 

  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) 

 ```ruby 
 

  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) 

 ```ruby 
 

  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