diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-11 05:23:14 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2012-05-11 05:23:14 +0000 |
commit | 4bbb0f9801a2d3ff3635078cb38e1b4922f32573 (patch) | |
tree | 74366a2669a2cad0bcdac57b44fba614ac9236b8 | |
parent | af310963abb1ef737d52b29ec77f6598ac505472 (diff) | |
download | ruby-4bbb0f9801a2d3ff3635078cb38e1b4922f32573.tar.gz |
Bug #6419: fix cmdarg begin
* parse.y (primary): begin/end block should be isolated from outside.
[ruby-dev:45631][Bug #6419]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35620 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | parse.y | 3 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 5 |
3 files changed, 13 insertions, 0 deletions
@@ -1,3 +1,8 @@ +Fri May 11 14:23:11 2012 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * 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@ruby-lang.org> * ext/bigdecimal/bigdecimal.c (PUSH): to prevent VALUE from GC, @@ -2684,6 +2684,8 @@ primary : literal } | k_begin { + $<val>1 = cmdarg_stack; + cmdarg_stack = 0; /*%%%*/ $<num>$ = ruby_sourceline; /*% @@ -2692,6 +2694,7 @@ primary : literal bodystmt k_end { + cmdarg_stack = $<val>1; /*%%%*/ if ($3 == NULL) { $$ = NEW_NIL(); diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 112ad6d052..b792858090 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -171,6 +171,11 @@ class TestSyntax < Test::Unit::TestCase 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 |