diff options
author | yui-knk <yui-knk@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-03 12:27:01 +0000 |
---|---|---|
committer | yui-knk <yui-knk@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-03 12:27:01 +0000 |
commit | 8a24dc0e0d667dcb24bff478cd5e988c5514553c (patch) | |
tree | d5ebe2a9abc79afb8b1a7067469af8293907d9ed | |
parent | 71c2e5998856620c0d57767daf3f9a8c701d6116 (diff) | |
download | ruby-8a24dc0e0d667dcb24bff478cd5e988c5514553c.tar.gz |
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
-rw-r--r-- | parse.y | 25 |
1 files changed, 12 insertions, 13 deletions
@@ -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; |