summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--parse.y44
-rw-r--r--template/id.h.tmpl1
3 files changed, 37 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 4337b2f4cc..3fc9ee8ea7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Oct 26 17:11:53 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * parse.y (call_op, call_op2): fix values on ripper. [Feature #11537]
+
Mon Oct 26 12:55:06 2015 Nobuyoshi Nakada <nobu@ruby-lang.org>
* parse.y (call_op2): separate from call_op and also allow "::",
diff --git a/parse.y b/parse.y
index b11c3d2daa..fbec9596ec 100644
--- a/parse.y
+++ b/parse.y
@@ -1466,7 +1466,7 @@ command : fcall command_args %prec tLOWEST
$$ = NEW_QCALL($2, $1, $3, $4);
fixpos($$, $1);
/*%
- $$ = dispatch4(command_call, $1, ripper_id2sym($2), $3, $4);
+ $$ = dispatch4(command_call, $1, $2, $3, $4);
%*/
}
| primary_value call_op operation2 command_args cmd_brace_block
@@ -1477,7 +1477,7 @@ command : fcall command_args %prec tLOWEST
$$ = $5;
fixpos($$, $1);
/*%
- $$ = dispatch4(command_call, $1, ripper_id2sym($2), $3, $4);
+ $$ = dispatch4(command_call, $1, $2, $3, $4);
$$ = method_add_block($$, $5);
%*/
}
@@ -1722,7 +1722,7 @@ mlhs_node : user_variable
/*%%%*/
$$ = attrset($1, $2, $3);
/*%
- $$ = dispatch3(field, $1, ripper_id2sym($2), $3);
+ $$ = dispatch3(field, $1, $2, $3);
%*/
}
| primary_value tCOLON2 tIDENTIFIER
@@ -1738,7 +1738,7 @@ mlhs_node : user_variable
/*%%%*/
$$ = attrset($1, $2, $3);
/*%
- $$ = dispatch3(field, $1, ripper_id2sym($2), $3);
+ $$ = dispatch3(field, $1, $2, $3);
%*/
}
| primary_value tCOLON2 tCONSTANT
@@ -1813,7 +1813,7 @@ lhs : user_variable
/*%%%*/
$$ = attrset($1, $2, $3);
/*%
- $$ = dispatch3(field, $1, ripper_id2sym($2), $3);
+ $$ = dispatch3(field, $1, $2, $3);
%*/
}
| primary_value tCOLON2 tIDENTIFIER
@@ -1829,7 +1829,7 @@ lhs : user_variable
/*%%%*/
$$ = attrset($1, $2, $3);
/*%
- $$ = dispatch3(field, $1, ripper_id2sym($2), $3);
+ $$ = dispatch3(field, $1, $2, $3);
%*/
}
| primary_value tCOLON2 tCONSTANT
@@ -3664,7 +3664,7 @@ method_call : fcall paren_args
$$ = NEW_QCALL($2, $1, $3, $5);
nd_set_line($$, $<num>4);
/*%
- $$ = dispatch3(call, $1, ripper_id2sym($2), $3);
+ $$ = dispatch3(call, $1, $2, $3);
$$ = method_optarg($$, $5);
%*/
}
@@ -3704,8 +3704,7 @@ method_call : fcall paren_args
$$ = NEW_QCALL($2, $1, idCall, $4);
nd_set_line($$, $<num>3);
/*%
- $$ = dispatch3(call, $1, ripper_id2sym($2),
- ID2SYM(idCall));
+ $$ = dispatch3(call, $1, $2, ID2SYM(idCall));
$$ = method_optarg($$, $4);
%*/
}
@@ -5119,12 +5118,33 @@ dot_or_colon : '.'
%*/
;
-call_op : '.' {$$ = '.';}
- | tDOTQ {$$ = tDOTQ;}
+call_op : '.'
+ {
+ /*%%%*/
+ $$ = '.';
+ /*%
+ $$ = ripper_id2sym('.');
+ %*/
+ }
+ | tDOTQ
+ {
+ /*%%%*/
+ $$ = tDOTQ;
+ /*%
+ $$ = ripper_id2sym(idDOTQ);
+ %*/
+ }
;
call_op2 : call_op
- | tCOLON2 {$$ = tCOLON2;}
+ | tCOLON2
+ {
+ /*%%%*/
+ $$ = tCOLON2;
+ /*%
+ $$ = ripper_id2sym(idCOLON2);
+ %*/
+ }
;
opt_terms : /* none */
diff --git a/template/id.h.tmpl b/template/id.h.tmpl
index ab09556f2b..5e7f117c24 100644
--- a/template/id.h.tmpl
+++ b/template/id.h.tmpl
@@ -92,6 +92,7 @@ enum ruby_method_ids {
idCOLON2 = RUBY_TOKEN(COLON2),
idANDOP = RUBY_TOKEN(ANDOP),
idOROP = RUBY_TOKEN(OROP),
+ idDOTQ = RUBY_TOKEN(DOTQ),
tPRESERVED_ID_BEGIN = <%=op_id_offset + token_op_ids.size - 1%>,
% ids[:preserved].each do |token|
id<%=token%>,