[ruby-trunk - Bug #6659][Open] prepend した Class/Module の ancestors に Class が混入する

Issue #6659 has been reported by nagachika (Tomoyuki C.).


Bug #6659: prepend した Class/Module の ancestors に Class が混入する

Author: nagachika (Tomoyuki C.)
Status: Open
Priority: Normal
Assignee: nobu (Nobuyoshi N.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-06-27 trunk 36240) [x86_64-darwin10.8.0]

Module#prepend を利用した Class/Module に対して ancestors を呼ぶと Class が入りこみます。
ancestors に入るだけで Object#is_a? の判定やメソッド呼び出しができるようになったりはしていないようです。

module M1
end

module M2
prepend M1
end
M2.ancestors # => [M2, M1, Class]

class C
prepend M1
end
C.ancestors # => [C, M1, Class, Object, Kernel, BasicObject]
C.new.is_a(Class) # => false
C.new.superclass # => NoMethodError: undefined method `allocate’ for
#<C:0x0000010103ba90>

Issue #6659 has been updated by nagachika (Tomoyuki C.).

Status changed from Open to Rejected

#6658 と重複してしまったのでこちらは閉じます。

Bug #6659: prepend した Class/Module の ancestors に Class が混入する

Author: nagachika (Tomoyuki C.)
Status: Rejected
Priority: Normal
Assignee: nobu (Nobuyoshi N.)
Category: core
Target version: 2.0.0
ruby -v: ruby 2.0.0dev (2012-06-27 trunk 36240) [x86_64-darwin10.8.0]

Module#prepend を利用した Class/Module に対して ancestors を呼ぶと Class が入りこみます。
ancestors に入るだけで Object#is_a? の判定やメソッド呼び出しができるようになったりはしていないようです。

module M1
end

module M2
prepend M1
end
M2.ancestors # => [M2, M1, Class]

class C
prepend M1
end
C.ancestors # => [C, M1, Class, Object, Kernel, BasicObject]
C.new.is_a(Class) # => false
C.new.superclass # => NoMethodError: undefined method `allocate’ for
#<C:0x0000010103ba90>