summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorskandhas <[email protected]>2013-04-25 11:17:34 +0800
committerskandhas <[email protected]>2013-04-25 11:17:34 +0800
commit8d778d9860792d9af81d97db25d9f8000327bee9 (patch)
tree66f2faa11292ce167078357f662e65887c0a8ee5
parent4faaef437d614ad270f646ccbd5a80fd80d4359e (diff)
downloadmruby-8d778d9860792d9af81d97db25d9f8000327bee9.tar.gz
mruby-8d778d9860792d9af81d97db25d9f8000327bee9.zip
fix Module#ancestors and update test
-rw-r--r--src/class.c2
-rw-r--r--test/t/module.rb6
2 files changed, 6 insertions, 2 deletions
diff --git a/src/class.c b/src/class.c
index c2d17e2fc..f029761a9 100644
--- a/src/class.c
+++ b/src/class.c
@@ -793,7 +793,7 @@ mrb_mod_ancestors(mrb_state *mrb, mrb_value self)
if (c->tt == MRB_TT_ICLASS) {
mrb_ary_push(mrb, result, mrb_obj_value(c->c));
}
- else {
+ else if (c->tt != MRB_TT_SCLASS) {
mrb_ary_push(mrb, result, mrb_obj_value(c));
}
c = c->super;
diff --git a/test/t/module.rb b/test/t/module.rb
index 23dacb44d..41ee8d8df 100644
--- a/test/t/module.rb
+++ b/test/t/module.rb
@@ -14,8 +14,12 @@ end
# TODO not implemented ATM assert('Module.nesting', '15.2.2.3.2') do
assert('Module#ancestors', '15.2.2.4.9') do
+ class Test4ModuleAncestors
+ end
+ sc = Test4ModuleAncestors.singleton_class
r = String.ancestors
- r.class == Array and r.include?(String) and r.include?(Object)
+ r.class == Array and r.include?(String) and r.include?(Object) and
+ ! sc.ancestors.include?(sc)
end
assert('Module#append_features', '15.2.2.4.10') do