[前][次][番号順一覧][スレッド一覧]

ruby-changes:2695

From: ko1@a...
Date: 11 Dec 2007 01:23:08 +0900
Subject: [ruby-changes:2695] matz - Ruby:r14186 (trunk): * parse.y (shadowing_lvar_gen): no duplicate error for "_".

matz	2007-12-11 01:22:52 +0900 (Tue, 11 Dec 2007)

  New Revision: 14186

  Modified files:
    trunk/ChangeLog
    trunk/parse.y
    trunk/version.h

  Log:
    * parse.y (shadowing_lvar_gen): no duplicate error for "_".

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/version.h?r1=14186&r2=14185
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?r1=14186&r2=14185
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14186&r2=14185

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 14185)
+++ ChangeLog	(revision 14186)
@@ -1,3 +1,7 @@
+Tue Dec 11 01:21:21 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* parse.y (shadowing_lvar_gen): no duplicate error for "_".
+
 Mon Dec 10 22:08:47 2007  Akinori MUSHA  <knu@i...>
 
 	* array.c (rb_ary_slice_bang): If an invalid range is given, do
Index: parse.y
===================================================================
--- parse.y	(revision 14185)
+++ parse.y	(revision 14186)
@@ -7626,20 +7626,24 @@
 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
Index: version.h
===================================================================
--- version.h	(revision 14185)
+++ version.h	(revision 14186)
@@ -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[];

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]