summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBlaž Hrastnik <[email protected]>2015-07-13 23:35:30 +0200
committerBlaž Hrastnik <[email protected]>2015-07-13 23:35:30 +0200
commit8c13e2b7c6e6c1c02771e4f9e5aebda109892503 (patch)
tree62bd88ba7224f616a325f8dd64bf6c287e815acf
parentb0fb9ccfd8cb5986ea153142687cfbed1a876d6b (diff)
downloadmruby-8c13e2b7c6e6c1c02771e4f9e5aebda109892503.tar.gz
mruby-8c13e2b7c6e6c1c02771e4f9e5aebda109892503.zip
Set origin when doing kind_of? comparisons
-rw-r--r--src/object.c1
-rw-r--r--test/t/module.rb8
2 files changed, 5 insertions, 4 deletions
diff --git a/src/object.c b/src/object.c
index f8f41bfe8..c834ee04f 100644
--- a/src/object.c
+++ b/src/object.c
@@ -487,6 +487,7 @@ mrb_obj_is_kind_of(mrb_state *mrb, mrb_value obj, struct RClass *c)
mrb_raise(mrb, E_TYPE_ERROR, "class or module required");
}
+ c = c->origin;
while (cl) {
if (cl == c || cl->mt == c->mt)
return TRUE;
diff --git a/test/t/module.rb b/test/t/module.rb
index 7b4a8fec7..a1996f5f6 100644
--- a/test/t/module.rb
+++ b/test/t/module.rb
@@ -543,21 +543,21 @@ assert('Module#prepend') do
b = labeled_module('b') { include a }
c = labeled_module('c') { prepend b }
- assert bug6654 do
+ #assert bug6654 do
# the Module#< operator should be used here instead, but we don't have it
assert_include(c.ancestors, a)
assert_include(c.ancestors, b)
- end
+ #end
bug8357 = '[ruby-core:54736] [Bug #8357]'
b = labeled_module('b') { prepend a }
c = labeled_class('c') { include b }
- assert bug8357 do
+ #assert bug8357 do
# the Module#< operator should be used here instead, but we don't have it
assert_include(c.ancestors, a)
assert_include(c.ancestors, b)
- end
+ #end
bug8357 = '[ruby-core:54742] [Bug #8357]'
assert_kind_of(b, c.new, bug8357)