summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authoryui-knk <yui-knk@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-03 12:27:01 +0000
committeryui-knk <yui-knk@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-03 12:27:01 +0000
commit8a24dc0e0d667dcb24bff478cd5e988c5514553c (patch)
treed5ebe2a9abc79afb8b1a7067469af8293907d9ed /parse.y
parent71c2e5998856620c0d57767daf3f9a8c701d6116 (diff)
parse.y: Fix a location of NODE_DVAR in rb_args_info
* parse.y (new_args_tail_gen): Set only a location of NODE_DVAR. e.g. The locations of the NODE_DVAR is fixed: ``` def a(k: 1, **kws) end ``` * Before ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 6, last_lineno: 1, last_column: 18) ``` * After ``` NODE_DVAR (line: 1, first_lineno: 1, first_column: 12, last_lineno: 1, last_column: 17) ``` git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60996 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y25
1 files changed, 12 insertions, 13 deletions
diff --git a/parse.y b/parse.y
index 5c7a7bc77b..7a5a11fc03 100644
--- a/parse.y
+++ b/parse.y
@@ -3375,19 +3375,19 @@ f_margs : f_marg_list
block_args_tail : f_block_kwarg ',' f_kwrest opt_f_block_arg
{
- $$ = new_args_tail($1, $3, $4, &@$);
+ $$ = new_args_tail($1, $3, $4, &@3);
}
| f_block_kwarg opt_f_block_arg
{
- $$ = new_args_tail($1, Qnone, $2, &@$);
+ $$ = new_args_tail($1, Qnone, $2, &@1);
}
| f_kwrest opt_f_block_arg
{
- $$ = new_args_tail(Qnone, $1, $2, &@$);
+ $$ = new_args_tail(Qnone, $1, $2, &@1);
}
| f_block_arg
{
- $$ = new_args_tail(Qnone, Qnone, $1, &@$);
+ $$ = new_args_tail(Qnone, Qnone, $1, &@1);
}
;
@@ -3423,7 +3423,7 @@ block_param : f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail
}
| f_arg ','
{
- $$ = new_args($1, Qnone, 1, Qnone, new_args_tail(Qnone, Qnone, Qnone, &@$));
+ $$ = new_args($1, Qnone, 1, Qnone, new_args_tail(Qnone, Qnone, Qnone, &@1));
/*%%%*/
/*%
dispatch1(excessed_comma, $$);
@@ -4453,19 +4453,19 @@ f_arglist : '(' f_args rparen
args_tail : f_kwarg ',' f_kwrest opt_f_block_arg
{
- $$ = new_args_tail($1, $3, $4, &@$);
+ $$ = new_args_tail($1, $3, $4, &@3);
}
| f_kwarg opt_f_block_arg
{
- $$ = new_args_tail($1, Qnone, $2, &@$);
+ $$ = new_args_tail($1, Qnone, $2, &@1);
}
| f_kwrest opt_f_block_arg
{
- $$ = new_args_tail(Qnone, $1, $2, &@$);
+ $$ = new_args_tail(Qnone, $1, $2, &@1);
}
| f_block_arg
{
- $$ = new_args_tail(Qnone, Qnone, $1, &@$);
+ $$ = new_args_tail(Qnone, Qnone, $1, &@1);
}
;
@@ -10711,7 +10711,7 @@ new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, NODE
}
static NODE*
-new_args_tail_gen(struct parser_params *parser, NODE *k, ID kr, ID b, const YYLTYPE *location)
+new_args_tail_gen(struct parser_params *parser, NODE *k, ID kr, ID b, const YYLTYPE *kr_location)
{
int saved_line = ruby_sourceline;
struct rb_args_info *args;
@@ -10720,7 +10720,6 @@ new_args_tail_gen(struct parser_params *parser, NODE *k, ID kr, ID b, const YYLT
args = ZALLOC(struct rb_args_info);
add_mark_object((VALUE)rb_imemo_alloc_new((VALUE)args, 0, 0, 0));
node = NEW_NODE(NODE_ARGS, 0, 0, args);
- node->nd_loc = *location;
if (parser->error_p) return node;
args->block_arg = b;
@@ -10766,14 +10765,14 @@ new_args_tail_gen(struct parser_params *parser, NODE *k, ID kr, ID b, const YYLT
if (kr) arg_var(kr);
if (b) arg_var(b);
- args->kw_rest_arg = new_dvar(kr, location);
+ args->kw_rest_arg = new_dvar(kr, kr_location);
args->kw_rest_arg->nd_cflag = kw_bits;
}
else if (kr) {
if (b) vtable_pop(lvtbl->args, 1); /* reorder */
arg_var(kr);
if (b) arg_var(b);
- args->kw_rest_arg = new_dvar(kr, location);
+ args->kw_rest_arg = new_dvar(kr, kr_location);
}
ruby_sourceline = saved_line;