Issue #7993 has been updated by nobu (Nobuyoshi Nakada).

Backport set to 1.9.3: DONTNEED, 2.0.0: REQUIRED


----------------------------------------
Bug #7993: owner of methods defined after using Module#prepend
https://bugs.ruby-lang.org/issues/7993#change-43733

Author: no6v (Nobuhiro IMAI)
Status: Closed
Priority: Normal
Assignee: 
Category: core
Target version: 
ruby -v: RUBY_DESCRIPTION # => "ruby 2.1.0dev (2013-03-01 trunk 39546) [x86_64-linux]"
Backport: 1.9.3: DONTNEED, 2.0.0: REQUIRED


=begin
The owner of methods defined after using Module#prepend seems to be incorrect.

 RUBY_DESCRIPTION # => "ruby 2.1.0dev (2013-03-01 trunk 39546) [x86_64-linux]"
 
 class C
   attr_reader :a
   prepend Module.new
   attr_reader :b
 end
 C.instance_method(:a).owner # => C
 C.instance_method(:b).owner # => #<C:0x00000000a52300>
 C.new.method(:a).owner      # => C
 C.new.method(:b).owner      # => #<C:0x00000000a52300>
 
 module M
   attr_reader :a
   prepend Module.new
   attr_reader :b
 end
 M.instance_method(:a).owner # => M
 M.instance_method(:b).owner # =>
 # ~> -:19:in `<main>': undefined method `class' for #<M:0x00000000a515b8> (NoMethodError)
=end


-- 
http://bugs.ruby-lang.org/