diff options
| author | skandhas <[email protected]> | 2013-04-25 11:17:34 +0800 |
|---|---|---|
| committer | skandhas <[email protected]> | 2013-04-25 11:17:34 +0800 |
| commit | 8d778d9860792d9af81d97db25d9f8000327bee9 (patch) | |
| tree | 66f2faa11292ce167078357f662e65887c0a8ee5 | |
| parent | 4faaef437d614ad270f646ccbd5a80fd80d4359e (diff) | |
| download | mruby-8d778d9860792d9af81d97db25d9f8000327bee9.tar.gz mruby-8d778d9860792d9af81d97db25d9f8000327bee9.zip | |
fix Module#ancestors and update test
| -rw-r--r-- | src/class.c | 2 | ||||
| -rw-r--r-- | test/t/module.rb | 6 |
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 |
