なかだです。

At Tue, 11 Jan 2005 22:30:18 +0900,
sheepman wrote in [ruby-list:40519]:
> 特異クラスに関して質問があります。
> [ruby-dev:23690] で「特異クラスが特異オブジェクトのクラスを継承しない」ように
> なりました。以下のスクリプトで
> 
> class X
> end
> 
> x = X.new
> 
> class << x
>   p self < X           #=> nil
>   p self.superclass  #=> X
> end
> 
> というふうに、self.superclass が X であるのは意図されたことでしょうか。

いや、もちろん見落としです。後者は #<Class:X> になるべきだと思
います。


Index: object.c =================================================================== RCS file: /cvs/ruby/src/ruby/object.c,v retrieving revision 1.164 diff -U2 -p -r1.164 object.c --- object.c 15 Dec 2004 16:01:11 -0000 1.164 +++ object.c 11 Jan 2005 14:54:40 -0000 @@ -1588,4 +1588,7 @@ rb_class_superclass(klass) rb_raise(rb_eTypeError, "uninitialized class"); } + if (FL_TEST(klass, FL_SINGLETON)) { + super = RBASIC(klass)->klass; + } while (TYPE(super) == T_ICLASS) { super = RCLASS(super)->super;
-- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦