From 6bd65de203c7aaffc8d4241a771491356002ed75 Mon Sep 17 00:00:00 2001 From: matz Date: Mon, 10 Dec 2007 16:22:52 +0000 Subject: [PATCH] * parse.y (shadowing_lvar_gen): no duplicate error for "_". git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14186 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ parse.y | 32 ++++++++++++++++++-------------- version.h | 6 +++--- 3 files changed, 25 insertions(+), 17 deletions(-) diff --git a/ChangeLog b/ChangeLog index 96bea66fa1..e265aa7fe4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Tue Dec 11 01:21:21 2007 Yukihiro Matsumoto + + * parse.y (shadowing_lvar_gen): no duplicate error for "_". + Mon Dec 10 22:08:47 2007 Akinori MUSHA * array.c (rb_ary_slice_bang): If an invalid range is given, do diff --git a/parse.y b/parse.y index 1d2669c453..2f3a118d10 100644 --- a/parse.y +++ b/parse.y @@ -7626,20 +7626,24 @@ assignable_gen(struct parser_params *parser, ID id, NODE *val) static void shadowing_lvar_gen(struct parser_params *parser, ID name) { - if (dyna_in_block()) { - if (dvar_curr(name)) { - yyerror("duplicated argument name"); - } - else if (dvar_defined(name) || local_id(name)) { - rb_warningS("shadowing outer local variable - %s", rb_id2name(name)); - vtable_add(lvtbl->vars, name); - } - } - else { - if (local_id(name)) { - yyerror("duplicated argument name"); - } - } + static ID uscore; + + if (!uscore) uscore = rb_intern("_"); + if (uscore == name) return; + if (dyna_in_block()) { + if (dvar_curr(name)) { + yyerror("duplicated argument name"); + } + else if (dvar_defined(name) || local_id(name)) { + rb_warningS("shadowing outer local variable - %s", rb_id2name(name)); + vtable_add(lvtbl->vars, name); + } + } + else { + if (local_id(name)) { + yyerror("duplicated argument name"); + } + } } static void diff --git a/version.h b/version.h index 2624e6f276..d1de4cbee7 100644 --- a/version.h +++ b/version.h @@ -1,7 +1,7 @@ #define RUBY_VERSION "1.9.0" -#define RUBY_RELEASE_DATE "2007-12-10" +#define RUBY_RELEASE_DATE "2007-12-11" #define RUBY_VERSION_CODE 190 -#define RUBY_RELEASE_CODE 20071210 +#define RUBY_RELEASE_CODE 20071211 #define RUBY_PATCHLEVEL 0 #define RUBY_VERSION_MAJOR 1 @@ -9,7 +9,7 @@ #define RUBY_VERSION_TEENY 0 #define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_MONTH 12 -#define RUBY_RELEASE_DAY 10 +#define RUBY_RELEASE_DAY 11 #ifdef RUBY_EXTERN RUBY_EXTERN const char ruby_version[];