aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--defs/id.def1
-rw-r--r--parse.y75
-rw-r--r--symbol.c2
-rw-r--r--template/id.h.tmpl2
4 files changed, 43 insertions, 37 deletions
diff --git a/defs/id.def b/defs/id.def
index f7fffbde3c..224ed70576 100644
--- a/defs/id.def
+++ b/defs/id.def
@@ -38,6 +38,7 @@ firstline, predefined = __LINE__+1, %[\
to_i
bt
bt_locations
+ call
_ UScore
"/*NULL*/" NULL
diff --git a/parse.y b/parse.y
index c57bfbff58..55ea63e823 100644
--- a/parse.y
+++ b/parse.y
@@ -1225,7 +1225,7 @@ stmt : keyword_alias fitem {lex_state = EXPR_FNAME;} fitem
| primary_value tCOLON2 tIDENTIFIER tOP_ASGN command_call
{
value_expr($5);
- $$ = new_attr_op_assign($1, ripper_intern("::"), $3, $4, $5);
+ $$ = new_attr_op_assign($1, ID2SYM(idCOLON2), $3, $4, $5);
}
| backref tOP_ASGN command_call
{
@@ -1425,7 +1425,7 @@ command : fcall command_args %prec tLOWEST
$$ = NEW_CALL($1, $3, $4);
fixpos($$, $1);
/*%
- $$ = dispatch4(command_call, $1, ripper_intern("::"), $3, $4);
+ $$ = dispatch4(command_call, $1, ID2SYM(idCOLON2), $3, $4);
%*/
}
| primary_value tCOLON2 operation2 command_args cmd_brace_block
@@ -1436,7 +1436,7 @@ command : fcall command_args %prec tLOWEST
$$ = $5;
fixpos($$, $1);
/*%
- $$ = dispatch4(command_call, $1, ripper_intern("::"), $3, $4);
+ $$ = dispatch4(command_call, $1, ID2SYM(idCOLON2), $3, $4);
$$ = method_add_block($$, $5);
%*/
}
@@ -1759,7 +1759,7 @@ lhs : user_variable
/*%%%*/
$$ = attrset($1, $3);
/*%
- $$ = dispatch3(field, $1, ripper_intern("::"), $3);
+ $$ = dispatch3(field, $1, ID2SYM(idCOLON2), $3);
%*/
}
| primary_value '.' tCONSTANT
@@ -2019,7 +2019,7 @@ arg : lhs '=' arg
| primary_value tCOLON2 tIDENTIFIER tOP_ASGN arg
{
value_expr($5);
- $$ = new_attr_op_assign($1, ripper_intern("::"), $3, $4, $5);
+ $$ = new_attr_op_assign($1, ID2SYM(idCOLON2), $3, $4, $5);
}
| primary_value tCOLON2 tCONSTANT tOP_ASGN arg
{
@@ -2126,7 +2126,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tPOW, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("**"), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idPow), $3);
%*/
}
| tUMINUS_NUM simple_numeric tPOW arg
@@ -2134,8 +2134,8 @@ arg : lhs '=' arg
/*%%%*/
$$ = NEW_CALL(call_bin_op($2, tPOW, $4), tUMINUS, 0);
/*%
- $$ = dispatch3(binary, $2, ripper_intern("**"), $4);
- $$ = dispatch2(unary, ripper_intern("-@"), $$);
+ $$ = dispatch3(binary, $2, ID2SYM(idPow), $4);
+ $$ = dispatch2(unary, ID2SYM(idUMinus), $$);
%*/
}
| tUPLUS arg
@@ -2143,7 +2143,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_uni_op($2, tUPLUS);
/*%
- $$ = dispatch2(unary, ripper_intern("+@"), $2);
+ $$ = dispatch2(unary, ID2SYM(idUPlus), $2);
%*/
}
| tUMINUS arg
@@ -2151,7 +2151,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_uni_op($2, tUMINUS);
/*%
- $$ = dispatch2(unary, ripper_intern("-@"), $2);
+ $$ = dispatch2(unary, ID2SYM(idUMinus), $2);
%*/
}
| arg '|' arg
@@ -2183,7 +2183,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tCMP, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("<=>"), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idCmp), $3);
%*/
}
| arg '>' arg
@@ -2199,7 +2199,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tGEQ, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern(">="), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idGE), $3);
%*/
}
| arg '<' arg
@@ -2215,7 +2215,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tLEQ, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("<="), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idLE), $3);
%*/
}
| arg tEQ arg
@@ -2223,7 +2223,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tEQ, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("=="), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idEq), $3);
%*/
}
| arg tEQQ arg
@@ -2231,7 +2231,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tEQQ, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("==="), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idEqq), $3);
%*/
}
| arg tNEQ arg
@@ -2239,7 +2239,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tNEQ, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("!="), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idNeq), $3);
%*/
}
| arg tMATCH arg
@@ -2250,7 +2250,7 @@ arg : lhs '=' arg
$$ = reg_named_capture_assign($1->nd_lit, $$);
}
/*%
- $$ = dispatch3(binary, $1, ripper_intern("=~"), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idEqTilde), $3);
%*/
}
| arg tNMATCH arg
@@ -2258,7 +2258,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tNMATCH, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("!~"), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idNeqTilde), $3);
%*/
}
| '!' arg
@@ -2282,7 +2282,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tLSHFT, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern("<<"), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idLTLT), $3);
%*/
}
| arg tRSHFT arg
@@ -2290,7 +2290,7 @@ arg : lhs '=' arg
/*%%%*/
$$ = call_bin_op($1, tRSHFT, $3);
/*%
- $$ = dispatch3(binary, $1, ripper_intern(">>"), $3);
+ $$ = dispatch3(binary, $1, ID2SYM(idGTGT), $3);
%*/
}
| arg tANDOP arg
@@ -3643,7 +3643,7 @@ method_call : fcall paren_args
/*%%%*/
$$ = NEW_CALL($1, $3, 0);
/*%
- $$ = dispatch3(call, $1, ripper_intern("::"), $3);
+ $$ = dispatch3(call, $1, ID2SYM(idCOLON2), $3);
%*/
}
| primary_value '.'
@@ -3655,11 +3655,11 @@ method_call : fcall paren_args
paren_args
{
/*%%%*/
- $$ = NEW_CALL($1, rb_intern("call"), $4);
+ $$ = NEW_CALL($1, idCall, $4);
nd_set_line($$, $<num>3);
/*%
$$ = dispatch3(call, $1, ripper_id2sym('.'),
- ripper_intern("call"));
+ ID2SYM(idCall));
$$ = method_optarg($$, $4);
%*/
}
@@ -3672,11 +3672,11 @@ method_call : fcall paren_args
paren_args
{
/*%%%*/
- $$ = NEW_CALL($1, rb_intern("call"), $4);
+ $$ = NEW_CALL($1, idCall, $4);
nd_set_line($$, $<num>3);
/*%
- $$ = dispatch3(call, $1, ripper_intern("::"),
- ripper_intern("call"));
+ $$ = dispatch3(call, $1, ID2SYM(idCOLON2),
+ ID2SYM(idCall));
$$ = method_optarg($$, $4);
%*/
}
@@ -4327,7 +4327,7 @@ numeric : simple_numeric
$$ = $2;
$$->nd_lit = negate_lit($$->nd_lit);
/*%
- $$ = dispatch2(unary, ripper_intern("-@"), $2);
+ $$ = dispatch2(unary, ID2SYM(idUMinus), $2);
%*/
}
;
@@ -10774,16 +10774,18 @@ ripper_compile_error(struct parser_params *parser, const char *fmt, ...)
ripper_error_gen(parser);
}
+static ID id_warn, id_warning;
+
static void
ripper_warn0(struct parser_params *parser, const char *fmt)
{
- rb_funcall(parser->value, rb_intern("warn"), 1, STR_NEW2(fmt));
+ rb_funcall(parser->value, id_warn, 1, STR_NEW2(fmt));
}
static void
ripper_warnI(struct parser_params *parser, const char *fmt, int a)
{
- rb_funcall(parser->value, rb_intern("warn"), 2,
+ rb_funcall(parser->value, id_warn, 2,
STR_NEW2(fmt), INT2NUM(a));
}
@@ -10791,7 +10793,7 @@ ripper_warnI(struct parser_params *parser, const char *fmt, int a)
static void
ripper_warnS(struct parser_params *parser, const char *fmt, const char *str)
{
- rb_funcall(parser->value, rb_intern("warn"), 2,
+ rb_funcall(parser->value, id_warn, 2,
STR_NEW2(fmt), STR_NEW2(str));
}
#endif
@@ -10799,27 +10801,27 @@ ripper_warnS(struct parser_params *parser, const char *fmt, const char *str)
static void
ripper_warnV(struct parser_params *parser, const char *fmt, VALUE v)
{
- rb_funcall(parser->value, rb_intern("warn"), 2,
+ rb_funcall(parser->value, id_warn, 2,
STR_NEW2(fmt), v);
}
static void
ripper_warning0(struct parser_params *parser, const char *fmt)
{
- rb_funcall(parser->value, rb_intern("warning"), 1, STR_NEW2(fmt));
+ rb_funcall(parser->value, id_warning, 1, STR_NEW2(fmt));
}
static void
ripper_warningS(struct parser_params *parser, const char *fmt, const char *str)
{
- rb_funcall(parser->value, rb_intern("warning"), 2,
+ rb_funcall(parser->value, id_warning, 2,
STR_NEW2(fmt), STR_NEW2(str));
}
static void
ripper_warningV(struct parser_params *parser, const char *fmt, VALUE v)
{
- rb_funcall(parser->value, rb_intern("warning"), 2,
+ rb_funcall(parser->value, id_warning, 2,
STR_NEW2(fmt), v);
}
@@ -11027,9 +11029,8 @@ Init_ripper(void)
{
ripper_init_eventids1();
ripper_init_eventids2();
- /* ensure existing in symbol table */
- (void)rb_intern("||");
- (void)rb_intern("&&");
+ id_warn = rb_intern_const("warn");
+ id_warning = rb_intern_const("warning");
InitVM(ripper);
}
diff --git a/symbol.c b/symbol.c
index 6512344441..17954153f3 100644
--- a/symbol.c
+++ b/symbol.c
@@ -50,6 +50,7 @@ static ID register_static_symid_str(ID, VALUE);
#define tASET RUBY_TOKEN(ASET)
#define tLSHFT RUBY_TOKEN(LSHFT)
#define tRSHFT RUBY_TOKEN(RSHFT)
+#define tCOLON2 RUBY_TOKEN(COLON2)
static const struct {
unsigned short token;
@@ -72,6 +73,7 @@ static const struct {
{tASET, "[]="},
{tLSHFT, "<<"},
{tRSHFT, ">>"},
+ {tCOLON2, "::"},
};
#define op_tbl_count numberof(op_tbl)
diff --git a/template/id.h.tmpl b/template/id.h.tmpl
index d7e10e9330..6db478bd31 100644
--- a/template/id.h.tmpl
+++ b/template/id.h.tmpl
@@ -80,6 +80,7 @@ enum ruby_method_ids {
idLTLT = RUBY_TOKEN(LSHFT),
idLE = RUBY_TOKEN(LEQ),
idGT = '>',
+ idGTGT = RUBY_TOKEN(RSHFT),
idGE = RUBY_TOKEN(GEQ),
idEq = RUBY_TOKEN(EQ),
idEqq = RUBY_TOKEN(EQQ),
@@ -90,6 +91,7 @@ enum ruby_method_ids {
idNeqTilde = RUBY_TOKEN(NMATCH),
idAREF = RUBY_TOKEN(AREF),
idASET = RUBY_TOKEN(ASET),
+ idCOLON2 = RUBY_TOKEN(COLON2),
tPRESERVED_ID_BEGIN = <%=op_id_offset + token_op_ids.size - 1%>,
% ids[:preserved].each do |token|
id<%=token%>,