ruby-changes:15204
From: shyouhei <ko1@a...>
Date: Mon, 29 Mar 2010 14:59:58 +0900 (JST)
Subject: [ruby-changes:15204] Ruby:r27085 (trunk): instance_methods should not special-case singleton classes, fixes #2993
shyouhei 2010-03-29 14:59:46 +0900 (Mon, 29 Mar 2010) New Revision: 27085 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=27085 Log: instance_methods should not special-case singleton classes, fixes #2993 Signed-off-by: URABE, Shyouhei <shyouhei@r...> Modified files: trunk/class.c trunk/test/ruby/test_module.rb Index: class.c =================================================================== --- class.c (revision 27084) +++ class.c (revision 27085) @@ -852,7 +852,6 @@ for (; mod; mod = RCLASS_SUPER(mod)) { st_foreach(RCLASS_M_TBL(mod), method_entry, (st_data_t)list); if (BUILTIN_TYPE(mod) == T_ICLASS) continue; - if (FL_TEST(mod, FL_SINGLETON)) continue; if (!recur) break; } ary = rb_ary_new(); Index: test/ruby/test_module.rb =================================================================== --- test/ruby/test_module.rb (revision 27084) +++ test/ruby/test_module.rb (revision 27085) @@ -141,6 +141,11 @@ :bClass3 end end + + class CClass < BClass + def self.cClass + end + end MyClass = AClass.clone class MyClass @@ -281,6 +286,9 @@ assert_equal([:user, :mixin].sort, User.instance_methods(true).sort) assert_equal([:mixin], Mixin.instance_methods) assert_equal([:mixin], Mixin.instance_methods(true)) + assert_equal([:cClass], (class << CClass; self; end).instance_methods(false)) + assert_equal([], (class << BClass; self; end).instance_methods(false)) + assert_equal([:cm2], (class << AClass; self; end).instance_methods(false)) # Ruby 1.8 feature change: # #instance_methods includes protected methods. #assert_equal([:aClass], AClass.instance_methods(false)) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/