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