mirror of
https://github.com/ruby/ruby.git
synced 2025-08-24 13:34:17 +02:00
parse.y (new_args_gen): Set the location of NODE_ARGS
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60997 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
8a24dc0e0d
commit
c1a9911797
1 changed files with 38 additions and 37 deletions
75
parse.y
75
parse.y
|
@ -447,8 +447,8 @@ static NODE *new_command_gen(struct parser_params*parser, NODE *m, NODE *a) {m->
|
||||||
static NODE *method_add_block_gen(struct parser_params*parser, NODE *m, NODE *b) {b->nd_iter = m; return b;}
|
static NODE *method_add_block_gen(struct parser_params*parser, NODE *m, NODE *b) {b->nd_iter = m; return b;}
|
||||||
#define method_add_block(m,b) method_add_block_gen(parser, m, b)
|
#define method_add_block(m,b) method_add_block_gen(parser, m, b)
|
||||||
|
|
||||||
static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,NODE*);
|
static NODE *new_args_gen(struct parser_params*,NODE*,NODE*,ID,NODE*,NODE*,const YYLTYPE*);
|
||||||
#define new_args(f,o,r,p,t) new_args_gen(parser, (f),(o),(r),(p),(t))
|
#define new_args(f,o,r,p,t,location) new_args_gen(parser, (f),(o),(r),(p),(t),(location))
|
||||||
static NODE *new_args_tail_gen(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
|
static NODE *new_args_tail_gen(struct parser_params*,NODE*,ID,ID,const YYLTYPE*);
|
||||||
#define new_args_tail(k,kr,b,location) new_args_tail_gen(parser, (k),(kr),(b),(location))
|
#define new_args_tail(k,kr,b,location) new_args_tail_gen(parser, (k),(kr),(b),(location))
|
||||||
static NODE *new_kw_arg_gen(struct parser_params *parser, NODE *k, const YYLTYPE *location);
|
static NODE *new_kw_arg_gen(struct parser_params *parser, NODE *k, const YYLTYPE *location);
|
||||||
|
@ -872,7 +872,7 @@ new_args_gen(struct parser_params *parser, VALUE f, VALUE o, VALUE r, VALUE p, V
|
||||||
VALUE k = t->u1.value, kr = t->u2.value, b = t->u3.value;
|
VALUE k = t->u1.value, kr = t->u2.value, b = t->u3.value;
|
||||||
return params_new(f, o, r, p, k, kr, escape_Qundef(b));
|
return params_new(f, o, r, p, k, kr, escape_Qundef(b));
|
||||||
}
|
}
|
||||||
#define new_args(f,o,r,p,t) new_args_gen(parser, (f),(o),(r),(p),(t))
|
#define new_args(f,o,r,p,t,location) new_args_gen(parser, (f),(o),(r),(p),(t))
|
||||||
|
|
||||||
static inline VALUE
|
static inline VALUE
|
||||||
new_args_tail_gen(struct parser_params *parser, VALUE k, VALUE kr, VALUE b)
|
new_args_tail_gen(struct parser_params *parser, VALUE k, VALUE kr, VALUE b)
|
||||||
|
@ -2911,7 +2911,7 @@ primary : literal
|
||||||
switch (nd_type($2)) {
|
switch (nd_type($2)) {
|
||||||
case NODE_MASGN:
|
case NODE_MASGN:
|
||||||
m->nd_next = node_assign($2, new_for(new_dvar(id, &@2), 0, 0, &@2), &@2);
|
m->nd_next = node_assign($2, new_for(new_dvar(id, &@2), 0, 0, &@2), &@2);
|
||||||
args = new_args(m, 0, id, 0, new_args_tail(0, 0, 0, &@2));
|
args = new_args(m, 0, id, 0, new_args_tail(0, 0, 0, &@2), &@2);
|
||||||
break;
|
break;
|
||||||
case NODE_LASGN:
|
case NODE_LASGN:
|
||||||
case NODE_DASGN:
|
case NODE_DASGN:
|
||||||
|
@ -2919,13 +2919,13 @@ primary : literal
|
||||||
$2->nd_value = new_dvar(id, &@2);
|
$2->nd_value = new_dvar(id, &@2);
|
||||||
m->nd_plen = 1;
|
m->nd_plen = 1;
|
||||||
m->nd_next = $2;
|
m->nd_next = $2;
|
||||||
args = new_args(m, 0, 0, 0, new_args_tail(0, 0, 0, &@2));
|
args = new_args(m, 0, 0, 0, new_args_tail(0, 0, 0, &@2), &@2);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
NODE *masgn = new_masgn(new_list($2, &@2), 0, &@2);
|
NODE *masgn = new_masgn(new_list($2, &@2), 0, &@2);
|
||||||
m->nd_next = node_assign(masgn, new_dvar(id, &@2), &@2);
|
m->nd_next = node_assign(masgn, new_dvar(id, &@2), &@2);
|
||||||
args = new_args(m, 0, id, 0, new_args_tail(0, 0, 0, &@2));
|
args = new_args(m, 0, id, 0, new_args_tail(0, 0, 0, &@2), &@2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3403,27 +3403,27 @@ opt_block_args_tail : ',' block_args_tail
|
||||||
|
|
||||||
block_param : f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail
|
block_param : f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, $5, Qnone, $6);
|
$$ = new_args($1, $3, $5, Qnone, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail
|
| f_arg ',' f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, $5, $7, $8);
|
$$ = new_args($1, $3, $5, $7, $8, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_block_optarg opt_block_args_tail
|
| f_arg ',' f_block_optarg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, Qnone, Qnone, $4);
|
$$ = new_args($1, $3, Qnone, Qnone, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail
|
| f_arg ',' f_block_optarg ',' f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, Qnone, $5, $6);
|
$$ = new_args($1, $3, Qnone, $5, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_rest_arg opt_block_args_tail
|
| f_arg ',' f_rest_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, $3, Qnone, $4);
|
$$ = new_args($1, Qnone, $3, Qnone, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ','
|
| f_arg ','
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, 1, Qnone, new_args_tail(Qnone, Qnone, Qnone, &@1));
|
$$ = new_args($1, Qnone, 1, Qnone, new_args_tail(Qnone, Qnone, Qnone, &@1), &@$);
|
||||||
/*%%%*/
|
/*%%%*/
|
||||||
/*%
|
/*%
|
||||||
dispatch1(excessed_comma, $$);
|
dispatch1(excessed_comma, $$);
|
||||||
|
@ -3431,39 +3431,39 @@ block_param : f_arg ',' f_block_optarg ',' f_rest_arg opt_block_args_tail
|
||||||
}
|
}
|
||||||
| f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail
|
| f_arg ',' f_rest_arg ',' f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, $3, $5, $6);
|
$$ = new_args($1, Qnone, $3, $5, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_arg opt_block_args_tail
|
| f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, Qnone, Qnone, $2);
|
$$ = new_args($1, Qnone, Qnone, Qnone, $2, &@$);
|
||||||
}
|
}
|
||||||
| f_block_optarg ',' f_rest_arg opt_block_args_tail
|
| f_block_optarg ',' f_rest_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, $3, Qnone, $4);
|
$$ = new_args(Qnone, $1, $3, Qnone, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail
|
| f_block_optarg ',' f_rest_arg ',' f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, $3, $5, $6);
|
$$ = new_args(Qnone, $1, $3, $5, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_block_optarg opt_block_args_tail
|
| f_block_optarg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, Qnone, Qnone, $2);
|
$$ = new_args(Qnone, $1, Qnone, Qnone, $2, &@$);
|
||||||
}
|
}
|
||||||
| f_block_optarg ',' f_arg opt_block_args_tail
|
| f_block_optarg ',' f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, Qnone, $3, $4);
|
$$ = new_args(Qnone, $1, Qnone, $3, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_rest_arg opt_block_args_tail
|
| f_rest_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, Qnone, $1, Qnone, $2);
|
$$ = new_args(Qnone, Qnone, $1, Qnone, $2, &@$);
|
||||||
}
|
}
|
||||||
| f_rest_arg ',' f_arg opt_block_args_tail
|
| f_rest_arg ',' f_arg opt_block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, Qnone, $1, $3, $4);
|
$$ = new_args(Qnone, Qnone, $1, $3, $4, &@$);
|
||||||
}
|
}
|
||||||
| block_args_tail
|
| block_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, Qnone, Qnone, Qnone, $1);
|
$$ = new_args(Qnone, Qnone, Qnone, Qnone, $1, &@$);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -4481,64 +4481,64 @@ opt_args_tail : ',' args_tail
|
||||||
|
|
||||||
f_args : f_arg ',' f_optarg ',' f_rest_arg opt_args_tail
|
f_args : f_arg ',' f_optarg ',' f_rest_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, $5, Qnone, $6);
|
$$ = new_args($1, $3, $5, Qnone, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail
|
| f_arg ',' f_optarg ',' f_rest_arg ',' f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, $5, $7, $8);
|
$$ = new_args($1, $3, $5, $7, $8, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_optarg opt_args_tail
|
| f_arg ',' f_optarg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, Qnone, Qnone, $4);
|
$$ = new_args($1, $3, Qnone, Qnone, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_optarg ',' f_arg opt_args_tail
|
| f_arg ',' f_optarg ',' f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, $3, Qnone, $5, $6);
|
$$ = new_args($1, $3, Qnone, $5, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_rest_arg opt_args_tail
|
| f_arg ',' f_rest_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, $3, Qnone, $4);
|
$$ = new_args($1, Qnone, $3, Qnone, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_arg ',' f_rest_arg ',' f_arg opt_args_tail
|
| f_arg ',' f_rest_arg ',' f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, $3, $5, $6);
|
$$ = new_args($1, Qnone, $3, $5, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_arg opt_args_tail
|
| f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args($1, Qnone, Qnone, Qnone, $2);
|
$$ = new_args($1, Qnone, Qnone, Qnone, $2, &@$);
|
||||||
}
|
}
|
||||||
| f_optarg ',' f_rest_arg opt_args_tail
|
| f_optarg ',' f_rest_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, $3, Qnone, $4);
|
$$ = new_args(Qnone, $1, $3, Qnone, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_optarg ',' f_rest_arg ',' f_arg opt_args_tail
|
| f_optarg ',' f_rest_arg ',' f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, $3, $5, $6);
|
$$ = new_args(Qnone, $1, $3, $5, $6, &@$);
|
||||||
}
|
}
|
||||||
| f_optarg opt_args_tail
|
| f_optarg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, Qnone, Qnone, $2);
|
$$ = new_args(Qnone, $1, Qnone, Qnone, $2, &@$);
|
||||||
}
|
}
|
||||||
| f_optarg ',' f_arg opt_args_tail
|
| f_optarg ',' f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, $1, Qnone, $3, $4);
|
$$ = new_args(Qnone, $1, Qnone, $3, $4, &@$);
|
||||||
}
|
}
|
||||||
| f_rest_arg opt_args_tail
|
| f_rest_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, Qnone, $1, Qnone, $2);
|
$$ = new_args(Qnone, Qnone, $1, Qnone, $2, &@$);
|
||||||
}
|
}
|
||||||
| f_rest_arg ',' f_arg opt_args_tail
|
| f_rest_arg ',' f_arg opt_args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, Qnone, $1, $3, $4);
|
$$ = new_args(Qnone, Qnone, $1, $3, $4, &@$);
|
||||||
}
|
}
|
||||||
| args_tail
|
| args_tail
|
||||||
{
|
{
|
||||||
$$ = new_args(Qnone, Qnone, Qnone, Qnone, $1);
|
$$ = new_args(Qnone, Qnone, Qnone, Qnone, $1, &@$);
|
||||||
}
|
}
|
||||||
| /* none */
|
| /* none */
|
||||||
{
|
{
|
||||||
$$ = new_args_tail(Qnone, Qnone, Qnone, &@0);
|
$$ = new_args_tail(Qnone, Qnone, Qnone, &@0);
|
||||||
$$ = new_args(Qnone, Qnone, Qnone, Qnone, $$);
|
$$ = new_args(Qnone, Qnone, Qnone, Qnone, $$, &@0);
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -10689,7 +10689,7 @@ arg_blk_pass(NODE *node1, NODE *node2)
|
||||||
|
|
||||||
|
|
||||||
static NODE*
|
static NODE*
|
||||||
new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, NODE *tail)
|
new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, NODE *tail, const YYLTYPE *location)
|
||||||
{
|
{
|
||||||
int saved_line = ruby_sourceline;
|
int saved_line = ruby_sourceline;
|
||||||
struct rb_args_info *args = tail->nd_ainfo;
|
struct rb_args_info *args = tail->nd_ainfo;
|
||||||
|
@ -10706,6 +10706,7 @@ new_args_gen(struct parser_params *parser, NODE *m, NODE *o, ID r, NODE *p, NODE
|
||||||
args->opt_args = o;
|
args->opt_args = o;
|
||||||
|
|
||||||
ruby_sourceline = saved_line;
|
ruby_sourceline = saved_line;
|
||||||
|
tail->nd_loc = *location;
|
||||||
|
|
||||||
return tail;
|
return tail;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue