aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--compile.c6
-rw-r--r--parse.y4
2 files changed, 5 insertions, 5 deletions
diff --git a/compile.c b/compile.c
index f246ce9eaa..811160ad11 100644
--- a/compile.c
+++ b/compile.c
@@ -1307,7 +1307,7 @@ iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *const optargs,
iseq->body->param.flags.has_kw = TRUE;
iseq->body->param.keyword = keyword = ZALLOC_N(struct rb_iseq_param_keyword, 1);
- keyword->bits_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
+ keyword->bits_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_cflag);
while (node) {
NODE *val_node = node->nd_body->nd_value;
@@ -1346,8 +1346,8 @@ iseq_set_arguments_keywords(rb_iseq_t *iseq, LINK_ANCHOR *const optargs,
keyword->num = kw;
- if (args->kw_rest_arg->nd_cflag != 0) {
- keyword->rest_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_cflag);
+ if (args->kw_rest_arg->nd_vid != 0) {
+ keyword->rest_start = get_dyna_var_idx_at_raw(iseq, args->kw_rest_arg->nd_vid);
iseq->body->param.flags.has_kwrest = TRUE;
}
keyword->required_num = rkw;
diff --git a/parse.y b/parse.y
index c89b8afc8e..3674177506 100644
--- a/parse.y
+++ b/parse.y
@@ -9920,8 +9920,8 @@ new_args_tail_gen(struct parser_params *parser, NODE *k, ID kr, ID b)
if (kr) arg_var(kr);
if (b) arg_var(b);
- args->kw_rest_arg = NEW_DVAR(kw_bits);
- args->kw_rest_arg->nd_cflag = kr;
+ args->kw_rest_arg = NEW_DVAR(kr);
+ args->kw_rest_arg->nd_cflag = kw_bits;
}
else if (kr) {
if (b) vtable_pop(lvtbl->args, 1); /* reorder */