aboutsummaryrefslogtreecommitdiffstats
path: root/vm_args.c
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2019-09-06 13:35:50 -0700
committerJeremy Evans <code@jeremyevans.net>2019-09-06 19:41:23 -0700
commit56036815207b803151b0c7215da3a880bbad6df1 (patch)
treeeeb0eb6ec17b8b56fbfe95f1b46cc2c9bc4789ec /vm_args.c
parent80e679ef2d6f370e853e37053c73930c65b5e76c (diff)
downloadruby-56036815207b803151b0c7215da3a880bbad6df1.tar.gz
Enable keyword argument warnings when called from C
Previously, Ruby did not warn in these cases, and in some cases did not have the same behavior. This makes calls from C handled the same way as calls from Ruby.
Diffstat (limited to 'vm_args.c')
-rw-r--r--vm_args.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/vm_args.c b/vm_args.c
index 1542607323..7ffc756fad 100644
--- a/vm_args.c
+++ b/vm_args.c
@@ -786,7 +786,7 @@ setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * co
(kw_splat && given_argc > max_argc)) &&
args->kw_argv == NULL) {
if (given_argc > min_argc) {
- if (((kw_flag & (VM_CALL_KWARG | VM_CALL_KW_SPLAT)) || !ec->cfp->iseq /* called from C */)) {
+ if (kw_flag) {
int check_only_symbol = (kw_flag & VM_CALL_KW_SPLAT) &&
iseq->body->param.flags.has_kw &&
!iseq->body->param.flags.has_kwrest;
@@ -808,13 +808,10 @@ setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * co
* def foo(k:1) p [k]; end
* foo({k:42}) #=> 42
*/
- if (ec->cfp->iseq) {
- /* called from Ruby level */
- rb_warn_last_hash_to_keyword(calling, ci, iseq);
- }
+ rb_warn_last_hash_to_keyword(calling, ci, iseq);
given_argc--;
}
- else if (keyword_hash != Qnil && ec->cfp->iseq) {
+ else if (keyword_hash != Qnil) {
rb_warn_split_last_hash_to_keyword(calling, ci, iseq);
}
}