summaryrefslogtreecommitdiff
path: root/parse.y
diff options
context:
space:
mode:
authormame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-19 17:06:56 +0000
committermame <mame@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-01-19 17:06:56 +0000
commita403faa1b714d85dab5a281f01ac73433de61f01 (patch)
tree25b3c10ee1011e85cb0b2aeab481ebf9bfeb5d5c /parse.y
parentd0b094b062a754d47eaf37c49e1f31ee5cb0a377 (diff)
parse.y: Split the path of assignable to Ripper/Parser
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y100
1 files changed, 52 insertions, 48 deletions
diff --git a/parse.y b/parse.y
index 894c1967de..43d464c5dd 100644
--- a/parse.y
+++ b/parse.y
@@ -412,8 +412,6 @@ static NODE *new_const_op_assign(struct parser_params *p, NODE *lhs, ID op, NODE
#define top_const_field(n,loc) NEW_COLON3(n,loc)
static NODE *const_decl(struct parser_params *p, NODE* path, const YYLTYPE *loc);
-#define var_field(p, n) (n)
-
static NODE *opt_arg_append(NODE*, NODE*);
static NODE *kwd_append(NODE*, NODE*);
@@ -471,7 +469,7 @@ static ID ripper_get_id(VALUE);
#define get_id(id) ripper_get_id(id)
static VALUE ripper_get_value(VALUE);
#define get_value(val) ripper_get_value(val)
-static VALUE assignable(struct parser_params*,VALUE,VALUE,const YYLTYPE*);
+static VALUE assignable(struct parser_params*,VALUE);
static int id_is_var(struct parser_params *p, ID id);
#define method_cond(p,node,loc) (node)
@@ -705,12 +703,10 @@ static VALUE heredoc_dedent(struct parser_params*,VALUE);
#ifndef RIPPER
# define Qnone 0
# define Qnull 0
-# define REQUIRED_KEYWORD NODE_SPECIAL_REQUIRED_KEYWORD
# define ifndef_ripper(x) (x)
#else
# define Qnone Qnil
# define Qnull Qundef
-# define REQUIRED_KEYWORD Qundef
# define ifndef_ripper(x)
#endif
@@ -1344,6 +1340,7 @@ fcall : operation
$$ = NEW_FCALL($1, 0, &@$);
nd_set_line($$, p->tokline);
/*% %*/
+ /*% ripper: $1 %*/
}
;
@@ -1558,11 +1555,17 @@ mlhs_post : mlhs_item
mlhs_node : user_variable
{
- $$ = assignable(p, var_field(p, $1), 0, &@$);
+ /*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
+ /*% %*/
+ /*% ripper[var_field_1]: assignable("p", $1) %*/
}
| keyword_variable
{
- $$ = assignable(p, var_field(p, $1), 0, &@$);
+ /*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
+ /*% %*/
+ /*% ripper[var_field_1]: assignable("p", $1) %*/
}
| primary_value '[' opt_call_args rbracket
{
@@ -1612,11 +1615,17 @@ mlhs_node : user_variable
lhs : user_variable
{
- $$ = assignable(p, var_field(p, $1), 0, &@$);
+ /*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
+ /*% %*/
+ /*% ripper[var_field_1]: assignable("p", $1) %*/
}
| keyword_variable
{
- $$ = assignable(p, var_field(p, $1), 0, &@$);
+ /*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
+ /*% %*/
+ /*% ripper[var_field_1]: assignable("p", $1) %*/
}
| primary_value '[' opt_call_args rbracket
{
@@ -2733,9 +2742,10 @@ for_var : lhs
f_marg : f_norm_arg
{
- $$ = assignable(p, $1, 0, &@$);
/*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
/*% %*/
+ /*% ripper: assignable("p", $1) %*/
}
| tLPAREN f_margs rparen
{
@@ -2771,19 +2781,17 @@ f_margs : f_marg_list
}
| f_marg_list ',' tSTAR f_norm_arg
{
- $$ = assignable(p, $4, 0, &@$);
/*%%%*/
- $$ = NEW_MASGN($1, $$, &@$);
+ $$ = NEW_MASGN($1, assignable(p, $4, 0, &@$), &@$);
/*% %*/
- /*% ripper: mlhs_add_star!($1, "$$") %*/
+ /*% ripper: mlhs_add_star!($1, assignable("p", $4)) %*/
}
| f_marg_list ',' tSTAR f_norm_arg ',' f_marg_list
{
- $$ = assignable(p, $4, 0, &@$);
/*%%%*/
- $$ = NEW_MASGN($1, NEW_POSTARG($$, $6, &@$), &@$);
+ $$ = NEW_MASGN($1, NEW_POSTARG(assignable(p, $4, 0, &@$), $6, &@$), &@$);
/*% %*/
- /*% ripper: mlhs_add_post!(mlhs_add_star!($1, "$$"), $6) %*/
+ /*% ripper: mlhs_add_post!(mlhs_add_star!($1, assignable("p", $4)), $6) %*/
}
| f_marg_list ',' tSTAR
{
@@ -2801,19 +2809,17 @@ f_margs : f_marg_list
}
| tSTAR f_norm_arg
{
- $$ = assignable(p, $2, 0, &@$);
/*%%%*/
- $$ = NEW_MASGN(0, $$, &@$);
+ $$ = NEW_MASGN(0, assignable(p, $2, 0, &@$), &@$);
/*% %*/
- /*% ripper: mlhs_add_star!(mlhs_new!, "$$") %*/
+ /*% ripper: mlhs_add_star!(mlhs_new!, assignable("p", $2)) %*/
}
| tSTAR f_norm_arg ',' f_marg_list
{
- $$ = assignable(p, $2, 0, &@$);
/*%%%*/
- $$ = NEW_MASGN(0, NEW_POSTARG($$, $4, &@$), &@$);
+ $$ = NEW_MASGN(0, NEW_POSTARG(assignable(p, $2, 0, &@$), $4, &@$), &@$);
/*% %*/
- /*% ripper: mlhs_add_post!(mlhs_add_star!(mlhs_new!, "$$"), $4) %*/
+ /*% ripper: mlhs_add_post!(mlhs_add_star!(mlhs_new!, assignable("p", $2)), $4) %*/
}
| tSTAR
{
@@ -3194,11 +3200,9 @@ opt_rescue : keyword_rescue exc_list exc_var then
opt_rescue
{
/*%%%*/
- if ($3) {
- $3 = node_assign(p, $3, NEW_ERRINFO(&@3), &@3);
- $5 = block_append(p, $3, $5);
- }
- $$ = NEW_RESBODY($2, $5, $6, &@$);
+ $$ = NEW_RESBODY($2,
+ $3 ? block_append(p, node_assign(p, $3, NEW_ERRINFO(&@3), &@3), $5) : $5,
+ $6, &@$);
fixpos($$, $2?$2:$5);
/*% %*/
/*% ripper: rescue!(escape_Qundef($2), escape_Qundef($3), escape_Qundef($5), escape_Qundef($6)) %*/
@@ -3659,11 +3663,17 @@ var_ref : user_variable
var_lhs : user_variable
{
- $$ = assignable(p, var_field(p, $1), 0, &@$);
+ /*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
+ /*% %*/
+ /*% ripper[var_field_1]: assignable("p", $1) %*/
}
| keyword_variable
{
- $$ = assignable(p, var_field(p, $1), 0, &@$);
+ /*%%%*/
+ $$ = assignable(p, $1, 0, &@$);
+ /*% %*/
+ /*% ripper[var_field_1]: assignable("p", $1) %*/
}
;
@@ -3912,38 +3922,34 @@ f_label : tLABEL
f_kw : f_label arg_value
{
p->cur_arg = 0;
- $$ = assignable(p, $1, $2, &@$);
/*%%%*/
- $$ = new_kw_arg(p, $$, &@$);
+ $$ = new_kw_arg(p, assignable(p, $1, $2, &@$), &@$);
/*% %*/
- /*% ripper: rb_assoc_new(get_value("$$"), get_value($2)) %*/
+ /*% ripper: rb_assoc_new(get_value(assignable("p", $1)), get_value($2)) %*/
}
| f_label
{
p->cur_arg = 0;
- $$ = assignable(p, $1, REQUIRED_KEYWORD, &@$);
/*%%%*/
- $$ = new_kw_arg(p, $$, &@$);
+ $$ = new_kw_arg(p, assignable(p, $1, NODE_SPECIAL_REQUIRED_KEYWORD, &@$), &@$);
/*% %*/
- /*% ripper: rb_assoc_new(get_value("$$"), 0) %*/
+ /*% ripper: rb_assoc_new(get_value(assignable("p", $1)), 0) %*/
}
;
f_block_kw : f_label primary_value
{
- $$ = assignable(p, $1, $2, &@$);
/*%%%*/
- $$ = new_kw_arg(p, $$, &@$);
+ $$ = new_kw_arg(p, assignable(p, $1, $2, &@$), &@$);
/*% %*/
- /*% ripper: rb_assoc_new(get_value("$$"), get_value($2)) %*/
+ /*% ripper: rb_assoc_new(get_value(assignable("p", $1)), get_value($2)) %*/
}
| f_label
{
- $$ = assignable(p, $1, REQUIRED_KEYWORD, &@$);
/*%%%*/
- $$ = new_kw_arg(p, $$, &@$);
+ $$ = new_kw_arg(p, assignable(p, $1, NODE_SPECIAL_REQUIRED_KEYWORD, &@$), &@$);
/*% %*/
- /*% ripper: rb_assoc_new(get_value("$$"), 0) %*/
+ /*% ripper: rb_assoc_new(get_value(assignable("p", $1)), 0) %*/
}
;
@@ -4005,22 +4011,20 @@ f_kwrest : kwrest_mark tIDENTIFIER
f_opt : f_arg_asgn '=' arg_value
{
p->cur_arg = 0;
- $$ = assignable(p, $1, $3, &@$);
/*%%%*/
- $$ = NEW_OPT_ARG(0, $$, &@$);
+ $$ = NEW_OPT_ARG(0, assignable(p, $1, $3, &@$), &@$);
/*% %*/
- /*% ripper: rb_assoc_new(get_value("$$"), get_value($3)) %*/
+ /*% ripper: rb_assoc_new(get_value(assignable("p", $1)), get_value($3)) %*/
}
;
f_block_opt : f_arg_asgn '=' primary_value
{
p->cur_arg = 0;
- $$ = assignable(p, $1, $3, &@$);
/*%%%*/
- $$ = NEW_OPT_ARG(0, $$, &@$);
+ $$ = NEW_OPT_ARG(0, assignable(p, $1, $3, &@$), &@$);
/*% %*/
- /*% ripper: rb_assoc_new(get_value("$$"), get_value($3)) %*/
+ /*% ripper: rb_assoc_new(get_value(assignable("p", $1)), get_value($3)) %*/
}
;
@@ -8893,7 +8897,7 @@ rb_parser_set_location(struct parser_params *p, YYLTYPE *yylloc)
#ifdef RIPPER
static VALUE
-assignable(struct parser_params *p, VALUE lhs, VALUE val, const YYLTYPE *loc)
+assignable(struct parser_params *p, VALUE lhs)
#else
static NODE*
assignable(struct parser_params *p, ID id, NODE *val, const YYLTYPE *loc)