diff options
author | Jeremy Evans <code@jeremyevans.net> | 2019-09-16 13:19:06 -0700 |
---|---|---|
committer | Jeremy Evans <code@jeremyevans.net> | 2019-09-17 16:22:44 -0700 |
commit | 9b35dc38644c10eed008f9ba19a7224f2fb49af2 (patch) | |
tree | 9c6c97cfd1cd828d8796145956621d6ac08ea6e8 /vm_args.c | |
parent | 0785469a400b00eb4576fedbf93b614c70eaf760 (diff) |
Pass keyword argument flag when rb_call_super_kw calls method_missing
This makes method_missing take a flag for whether keyword arguments
were passed.
Adds tests both for rb_call_super_kw usage as well as general usage
of super calling method_missing in Ruby methods.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/2462
Diffstat (limited to 'vm_args.c')
-rw-r--r-- | vm_args.c | 4 |
1 files changed, 2 insertions, 2 deletions
@@ -13,7 +13,7 @@ NORETURN(static void argument_arity_error(rb_execution_context_t *ec, const rb_i NORETURN(static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)); VALUE rb_keyword_error_new(const char *error, VALUE keys); /* class.c */ static VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv, - enum method_missing_reason call_status); + enum method_missing_reason call_status, int kw_splat); struct args_info { /* basic args info */ @@ -1072,7 +1072,7 @@ refine_sym_proc_call(RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg, callback_arg)) vm_passed_block_handler_set(ec, blockarg); } if (!me) { - return method_missing(obj, mid, argc, argv, MISSING_NOENTRY); + return method_missing(obj, mid, argc, argv, MISSING_NOENTRY, VM_NO_KEYWORDS); } return rb_vm_call0(ec, obj, mid, argc, argv, me, VM_NO_KEYWORDS); } |