diff options
author | charliesome <charliesome@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-05 01:02:22 +0000 |
---|---|---|
committer | charliesome <charliesome@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-08-05 01:02:22 +0000 |
commit | 5e98991f1bf475cedff781e3ae2f2307c884f52d (patch) | |
tree | 061775479ddf4fc9c2af3745fcee9cb3107a4c80 | |
parent | b649592c4ab31c5ac0cbbd0c5136b7cbbeb82c32 (diff) |
* object.c (rb_class_inherited_p): allow iclasses to be tested for
inheritance. [Bug #8686] [ruby-core:56174]
* test/ruby/test_method.rb: add test
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@42380 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | object.c | 2 | ||||
-rw-r--r-- | test/ruby/test_method.rb | 16 |
3 files changed, 24 insertions, 1 deletions
@@ -1,3 +1,10 @@ +Mon Aug 5 10:01:00 2013 Charlie Somerville <charliesome@ruby-lang.org> + + * object.c (rb_class_inherited_p): allow iclasses to be tested for + inheritance. [Bug #8686] [ruby-core:56174] + + * test/ruby/test_method.rb: add test + Mon Aug 5 06:13:48 2013 Zachary Scott <e@zzak.io> * enumerator.c: [DOC] Remove reference to Enumerator::Lazy#cycle @@ -1519,7 +1519,7 @@ rb_class_inherited_p(VALUE mod, VALUE arg) VALUE start = mod; if (mod == arg) return Qtrue; - if (!CLASS_OR_MODULE_P(arg)) { + if (!CLASS_OR_MODULE_P(arg) && !RB_TYPE_P(arg, T_ICLASS)) { rb_raise(rb_eTypeError, "compared with non class/module"); } arg = RCLASS_ORIGIN(arg); diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index c11dcf9269..18c25f14d1 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -262,6 +262,22 @@ class TestMethod < Test::Unit::TestCase end end + def test_define_singleton_method_with_extended_method + bug8686 = "[ruby-core:56174]" + + m = Module.new do + extend self + + def a + "a" + end + end + + assert_nothing_raised do + m.define_singleton_method(:a, m.method(:a)) + end + end + def test_define_method_transplating feature4254 = '[ruby-core:34267]' m = Module.new {define_method(:meth, M.instance_method(:meth))} |