* 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
This commit is contained in:
matz 2007-12-10 16:22:52 +00:00
parent d2e596ad04
commit 6bd65de203
3 changed files with 25 additions and 17 deletions

View File

@ -1,3 +1,7 @@
Tue Dec 11 01:21:21 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* parse.y (shadowing_lvar_gen): no duplicate error for "_".
Mon Dec 10 22:08:47 2007 Akinori MUSHA <knu@iDaemons.org> Mon Dec 10 22:08:47 2007 Akinori MUSHA <knu@iDaemons.org>
* array.c (rb_ary_slice_bang): If an invalid range is given, do * array.c (rb_ary_slice_bang): If an invalid range is given, do

32
parse.y
View File

@ -7626,20 +7626,24 @@ assignable_gen(struct parser_params *parser, ID id, NODE *val)
static void static void
shadowing_lvar_gen(struct parser_params *parser, ID name) shadowing_lvar_gen(struct parser_params *parser, ID name)
{ {
if (dyna_in_block()) { static ID uscore;
if (dvar_curr(name)) {
yyerror("duplicated argument name"); if (!uscore) uscore = rb_intern("_");
} if (uscore == name) return;
else if (dvar_defined(name) || local_id(name)) { if (dyna_in_block()) {
rb_warningS("shadowing outer local variable - %s", rb_id2name(name)); if (dvar_curr(name)) {
vtable_add(lvtbl->vars, name); yyerror("duplicated argument name");
} }
} else if (dvar_defined(name) || local_id(name)) {
else { rb_warningS("shadowing outer local variable - %s", rb_id2name(name));
if (local_id(name)) { vtable_add(lvtbl->vars, name);
yyerror("duplicated argument name"); }
} }
} else {
if (local_id(name)) {
yyerror("duplicated argument name");
}
}
} }
static void static void

View File

@ -1,7 +1,7 @@
#define RUBY_VERSION "1.9.0" #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_VERSION_CODE 190
#define RUBY_RELEASE_CODE 20071210 #define RUBY_RELEASE_CODE 20071211
#define RUBY_PATCHLEVEL 0 #define RUBY_PATCHLEVEL 0
#define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MAJOR 1
@ -9,7 +9,7 @@
#define RUBY_VERSION_TEENY 0 #define RUBY_VERSION_TEENY 0
#define RUBY_RELEASE_YEAR 2007 #define RUBY_RELEASE_YEAR 2007
#define RUBY_RELEASE_MONTH 12 #define RUBY_RELEASE_MONTH 12
#define RUBY_RELEASE_DAY 10 #define RUBY_RELEASE_DAY 11
#ifdef RUBY_EXTERN #ifdef RUBY_EXTERN
RUBY_EXTERN const char ruby_version[]; RUBY_EXTERN const char ruby_version[];