diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-29 15:01:49 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2014-10-29 15:01:49 +0000 |
commit | 049bbd72e33ef42852968b1ff01b2421cc14c25d (patch) | |
tree | 0caddf76faa55969236d82e3fb222da75677f7ec | |
parent | 6fe9b2b79446e20e4a3a48c898313c63258182d5 (diff) | |
download | ruby-049bbd72e33ef42852968b1ff01b2421cc14c25d.tar.gz |
parse.y: reset current_arg after block var
* parse.y (block_param_def): reset current_arg after block
parameter definition, not to warn references in that block body.
[ruby-core:65990] [Bug #10314]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@48190 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | parse.y | 2 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 10 |
2 files changed, 12 insertions, 0 deletions
@@ -3409,6 +3409,7 @@ opt_block_param : none block_param_def : '|' opt_bv_decl '|' { + current_arg = 0; /*%%%*/ $$ = 0; /*% @@ -3427,6 +3428,7 @@ block_param_def : '|' opt_bv_decl '|' } | '|' block_param opt_bv_decl '|' { + current_arg = 0; /*%%%*/ $$ = $2; /*% diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 55af33fe48..e70470555c 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -171,6 +171,11 @@ class TestSyntax < Test::Unit::TestCase assert_warn("") do o.instance_eval("def foo(var: def bar(var) var; end) var end") end + + o = Object.new + assert_warn("") do + o.instance_eval("proc {|var: 1| var}") + end end def test_optional_self_reference @@ -207,6 +212,11 @@ class TestSyntax < Test::Unit::TestCase assert_warn("") do o.instance_eval("def foo(var = def bar(var) var; end) var end") end + + o = Object.new + assert_warn("") do + o.instance_eval("proc {|var = 1| var}") + end end def test_warn_grouped_expression |