diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-06 05:55:11 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-10-06 05:55:11 +0000 |
commit | a15028bc38a6d2492803780acb7b55456a30051d (patch) | |
tree | 0eae1a19ed28aa19e974934a4776c043048fa68a /vm_insnhelper.c | |
parent | 581c0231278910e5e71d9c72449ecff66339301c (diff) | |
download | ruby-a15028bc38a6d2492803780acb7b55456a30051d.tar.gz |
proc.c: super_method of included method
* proc.c (method_super_method): search the next super method along
the included ancestor chain. [ruby-core:83114] [Bug #13973]
* vm_method.c (rb_callable_method_entry_without_refinements):
return the defined class.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60127 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_insnhelper.c')
-rw-r--r-- | vm_insnhelper.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 1678100eab..652b3d8133 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -1470,7 +1470,8 @@ check_match(VALUE pattern, VALUE target, enum vm_check_match_type type) } /* fall through */ case VM_CHECKMATCH_TYPE_CASE: { - const rb_callable_method_entry_t *me = rb_callable_method_entry_with_refinements(CLASS_OF(pattern), idEqq); + const rb_callable_method_entry_t *me = + rb_callable_method_entry_with_refinements(CLASS_OF(pattern), idEqq, NULL); if (me) { return vm_call0(GET_THREAD(), pattern, idEqq, 1, &target, me); } @@ -2042,7 +2043,7 @@ vm_call_opt_send(rb_thread_t *th, rb_control_frame_t *reg_cfp, struct rb_calling DEC_SP(1); } - cc->me = rb_callable_method_entry_with_refinements(CLASS_OF(calling->recv), ci->mid); + cc->me = rb_callable_method_entry_with_refinements(CLASS_OF(calling->recv), ci->mid, NULL); ci->flag = VM_CALL_FCALL | VM_CALL_OPT_SEND; return vm_call_method(th, reg_cfp, calling, ci, cc); } @@ -2085,7 +2086,7 @@ vm_call_method_missing(rb_thread_t *th, rb_control_frame_t *reg_cfp, struct rb_c cc_entry = *orig_cc; cc_entry.me = rb_callable_method_entry_without_refinements(CLASS_OF(calling->recv), - idMethodMissing); + idMethodMissing, NULL); cc = &cc_entry; calling->argc = argc; |