diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-12 09:11:16 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-11-12 09:40:18 +0900 |
commit | ed90ec3e0d8ff7789569b40ba36d3b3ce0e706e6 (patch) | |
tree | 1ee153070cffe86eb840c2ee4f6df4e4def011c2 | |
parent | 4a30fabfcfd72bd61bf1dad61f168eaba6100f12 (diff) | |
download | ruby-ed90ec3e0d8ff7789569b40ba36d3b3ce0e706e6.tar.gz |
Clear current argument name at empty block argument [Bug #16343]
-rw-r--r-- | parse.y | 1 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 20 |
2 files changed, 21 insertions, 0 deletions
@@ -3455,6 +3455,7 @@ block_param_def : '|' opt_bv_decl '|' } | tOROP { + p->cur_arg = 0; p->max_numparam = ORDINAL_PARAM; /*%%%*/ $$ = 0; diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 5fb4dfa64f..ba479fa459 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -243,6 +243,16 @@ class TestSyntax < Test::Unit::TestCase o = Object.new assert_warn("") do + o.instance_eval("def foo(var: bar {| | var}) var end") + end + + o = Object.new + assert_warn("") do + o.instance_eval("def foo(var: bar {|| var}) var end") + end + + o = Object.new + assert_warn("") do o.instance_eval("def foo(var: def bar(var) var; end) var end") end @@ -298,6 +308,16 @@ class TestSyntax < Test::Unit::TestCase o = Object.new assert_warn("") do + o.instance_eval("def foo(var = bar {| | var}) var end") + end + + o = Object.new + assert_warn("") do + o.instance_eval("def foo(var = bar {|| var}) var end") + end + + o = Object.new + assert_warn("") do o.instance_eval("def foo(var = def bar(var) var; end) var end") end |