diff options
| author | Blaž Hrastnik <[email protected]> | 2015-07-12 22:07:16 +0200 |
|---|---|---|
| committer | Blaž Hrastnik <[email protected]> | 2015-07-13 14:04:43 +0200 |
| commit | a725cb909333335ad178997795e84c332e555c65 (patch) | |
| tree | 753c33582f29d197b7887927680055cbac28bc4e | |
| parent | 47264bf2898fbfa5cae6709074b5e5564dbbe99c (diff) | |
| download | mruby-a725cb909333335ad178997795e84c332e555c65.tar.gz mruby-a725cb909333335ad178997795e84c332e555c65.zip | |
Include prepended methods in the instance_methods list.
| -rw-r--r-- | src/kernel.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/kernel.c b/src/kernel.c index bafab6e76..36ad683ee 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -653,13 +653,19 @@ mrb_class_instance_method_list(mrb_state *mrb, mrb_bool recur, struct RClass* kl { khint_t i; mrb_value ary; + mrb_bool prepended; struct RClass* oldklass; khash_t(st)* set = kh_init(st, mrb); + if (!recur && klass->origin != klass) { + klass = klass->origin; + prepended = 1; + } + oldklass = 0; while (klass && (klass != oldklass)) { method_entry_loop(mrb, klass, set); - if ((klass->tt == MRB_TT_ICLASS) || + if ((klass->tt == MRB_TT_ICLASS && !prepended) || (klass->tt == MRB_TT_SCLASS)) { } else { |
