diff options
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | parse.y | 44 | ||||
-rw-r--r-- | template/id.h.tmpl | 1 |
3 files changed, 37 insertions, 12 deletions
@@ -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 "::", @@ -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%>, |