diff --git a/parse.y b/parse.y index da91b53a02..6d04f4175e 100644 --- a/parse.y +++ b/parse.y @@ -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