diff --git a/ChangeLog b/ChangeLog index d77518cb41..df65c66188 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,8 @@ -Sun Jun 20 15:14:05 2010 Nobuyoshi Nakada +Sun Jun 20 16:17:24 2010 Nobuyoshi Nakada + + * 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. diff --git a/id.c b/id.c index 2111751a37..89ae4a4e77 100644 --- a/id.c +++ b/id.c @@ -47,4 +47,5 @@ Init_id(void) REGISTER_SYMID(idSend, "send"); REGISTER_SYMID(id__send__, "__send__"); REGISTER_SYMID(idInitialize, "initialize"); + REGISTER_SYMID(idUScore, "_"); } diff --git a/parse.y b/parse.y index 77cc71cf65..9969092e18 100644 --- a/parse.y +++ b/parse.y @@ -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