diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | id.c | 1 | ||||
-rw-r--r-- | parse.y | 6 | ||||
-rw-r--r-- | template/id.h.tmpl | 5 |
4 files changed, 12 insertions, 6 deletions
@@ -1,4 +1,8 @@ -Sun Jun 20 15:14:05 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> +Sun Jun 20 16:17:24 2010 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * id.c (Init_id): add underscore name. + + * parse.y (warn_unused_var): ignore underscore name. * parse.y (warn_unused_var): use same format as shadowing local variable. @@ -47,4 +47,5 @@ Init_id(void) REGISTER_SYMID(idSend, "send"); REGISTER_SYMID(id__send__, "__send__"); REGISTER_SYMID(idInitialize, "initialize"); + REGISTER_SYMID(idUScore, "_"); } @@ -8229,10 +8229,7 @@ assignable_gen(struct parser_params *parser, ID id, NODE *val) static ID shadowing_lvar_gen(struct parser_params *parser, ID name) { - ID uscore; - - CONST_ID(uscore, "_"); - if (uscore == name) return name; + if (idUScore == name) return name; if (dyna_in_block()) { if (dvar_curr(name)) { yyerror("duplicated argument name"); @@ -8935,6 +8932,7 @@ warn_unused_var(struct parser_params *parser, struct local_vars *local) } for (i = 0; i < cnt; ++i) { if (!v[i] || (u[i] & LVAR_USED)) continue; + if (idUScore == v[i]) continue; rb_compile_warn(ruby_sourcefile, (int)u[i], "assigned but unused variable - %s", rb_id2name(v[i])); } } diff --git a/template/id.h.tmpl b/template/id.h.tmpl index 11df0507f4..b91292a103 100644 --- a/template/id.h.tmpl +++ b/template/id.h.tmpl @@ -100,6 +100,7 @@ enum ruby_method_ids { tSend, t__send__, tInitialize, + tUScore, #if SUPPORT_JOKE tBitblt, tAnswer, @@ -120,7 +121,9 @@ enum ruby_method_ids { TOKEN2ID(Lambda), TOKEN2ID(Send), TOKEN2ID(__send__), - TOKEN2ID(Initialize) + TOKEN2ID(Initialize), + TOKEN2ID(UScore), + TOKEN2ID(LAST_ID) }; #ifdef tLAST_TOKEN |