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

ruby-changes:2301

From: ko1@a...
Date: 29 Oct 2007 18:42:33 +0900
Subject: [ruby-changes:2301] nobu - Ruby:r13792 (trunk): * parse.y (bvar): block-local variable can shadow outer variable.

nobu	2007-10-29 18:42:18 +0900 (Mon, 29 Oct 2007)

  New Revision: 13792

  Modified files:
    trunk/ChangeLog
    trunk/parse.y

  Log:
    * parse.y (bvar): block-local variable can shadow outer variable.
      [ruby-core:13036]


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/parse.y?r1=13792&r2=13791
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13792&r2=13791

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13791)
+++ ChangeLog	(revision 13792)
@@ -1,3 +1,8 @@
+Mon Oct 29 18:42:17 2007  Nobuyoshi Nakada  <nobu@r...>
+
+	* parse.y (bvar): block-local variable can shadow outer variable.
+	  [ruby-core:13036]
+
 Mon Oct 29 17:58:16 2007  Nobuyoshi Nakada  <nobu@r...>
 
 	* string.c (rb_str_substr): perfomance improvement.  [ruby-dev:31806]
Index: parse.y
===================================================================
--- parse.y	(revision 13791)
+++ parse.y	(revision 13792)
@@ -669,7 +669,7 @@
 %type <node> brace_block cmd_brace_block do_block lhs none fitem
 %type <node> mlhs mlhs_head mlhs_basic mlhs_item mlhs_node mlhs_post mlhs_inner
 %type <id>   fsym variable sym symbol operation operation2 operation3
-%type <id>   cname fname op f_rest_arg f_block_arg opt_f_block_arg f_norm_arg
+%type <id>   cname fname op f_rest_arg f_block_arg opt_f_block_arg f_norm_arg f_bad_arg
 /*%%%*/
 /*%
 %type <val> program reswords then do dot_or_colon
@@ -3250,7 +3250,7 @@
 		    %*/
 		;
 
-bvar		:  f_norm_arg
+bvar		: tIDENTIFIER
 		    {
 		    /*%%%*/
 			new_bv($1);
@@ -3258,6 +3258,10 @@
 			$$ = $1;
 		    %*/
 		    }
+		| f_bad_arg
+		    {
+			$$ = 0;
+		    }
 		;
 
 lambda		:   {
@@ -4135,7 +4139,7 @@
 		    }
 		;
 
-f_norm_arg	: tCONSTANT
+f_bad_arg	: tCONSTANT
 		    {
 		    /*%%%*/
 			yyerror("formal argument cannot be a constant");
@@ -4171,6 +4175,9 @@
 			$$ = dispatch1(param_error, $1);
 		    %*/
 		    }
+		;
+
+f_norm_arg	: f_bad_arg
 		| tIDENTIFIER
 		    {
 		    /*%%%*/

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

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