From: nobu.nakada@... Date: 2002-12-10T12:01:01+09:00 Subject: [ruby-dev:19040] method defined in module なかだです。 1.7で、includeしたモジュールで定義されたMethodオブジェクトを inspectすると、常にスーパークラスで定義されたことになってしまい ます。 $ cat /tmp/a.rb module M; def foo; end; end class B; end class C < B; include M; end p C.new.method(:foo) $ ./1.7/i686-linux/miniruby -v /tmp/a.rb ruby 1.7.3 (2002-12-04) [i686-linux] # $ ./1.6/i686-linux/miniruby -v /tmp/a.rb ruby 1.6.8 (2002-12-09) [i686-linux] # Index: eval.c =================================================================== RCS file: /cvs/ruby/src/ruby/eval.c,v retrieving revision 1.357 diff -u -2 -p -r1.357 eval.c --- eval.c 2 Dec 2002 07:57:16 -0000 1.357 +++ eval.c 10 Dec 2002 02:54:11 -0000 @@ -6879,4 +6879,5 @@ mnew(klass, obj, id, mklass) } + if (TYPE(klass) == T_ICLASS) klass = RBASIC(klass)->klass; method = Data_Make_Struct(mklass, struct METHOD, bm_mark, free, data); data->klass = klass; -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦