ruby-changes:23569
From: nobu <ko1@a...>
Date: Fri, 11 May 2012 14:23:25 +0900 (JST)
Subject: [ruby-changes:23569] nobu:r35620 (trunk): Bug #6419: fix cmdarg begin
nobu 2012-05-11 14:23:14 +0900 (Fri, 11 May 2012) New Revision: 35620 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=35620 Log: Bug #6419: fix cmdarg begin * parse.y (primary): begin/end block should be isolated from outside. [ruby-dev:45631][Bug #6419] Modified files: trunk/ChangeLog trunk/parse.y trunk/test/ruby/test_syntax.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 35619) +++ ChangeLog (revision 35620) @@ -1,3 +1,8 @@ +Fri May 11 14:23:11 2012 Nobuyoshi Nakada <nobu@r...> + + * parse.y (primary): begin/end block should be isolated from outside. + [ruby-dev:45631][Bug #6419] + Fri May 11 14:09:47 2012 Nobuyoshi Nakada <nobu@r...> * ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC, Index: parse.y =================================================================== --- parse.y (revision 35619) +++ parse.y (revision 35620) @@ -2684,6 +2684,8 @@ } | k_begin { + $<val>1 = cmdarg_stack; + cmdarg_stack = 0; /*%%%*/ $<num>$ = ruby_sourceline; /*% @@ -2692,6 +2694,7 @@ bodystmt k_end { + cmdarg_stack = $<val>1; /*%%%*/ if ($3 == NULL) { $$ = NEW_NIL(); Index: test/ruby/test_syntax.rb =================================================================== --- test/ruby/test_syntax.rb (revision 35619) +++ test/ruby/test_syntax.rb (revision 35620) @@ -171,6 +171,11 @@ assert_valid_syntax("-> (x, y) {}", __FILE__, feature6390) end + def test_do_block_in_cmdarg_begin + bug6419 = '[ruby-dev:45631]' + assert_valid_syntax("p begin 1.times do 1 end end", __FILE__, bug6419) + end + private def not_label(x) @result = x; @not_label ||= nil end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/