1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

* 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
This commit is contained in:
charliesome 2013-08-05 01:02:22 +00:00
parent b649592c4a
commit 5e98991f1b
3 changed files with 24 additions and 1 deletions

View file

@ -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

View file

@ -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);

View file

@ -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))}