From 0c0ed1cee8aa8c538cc81f0daef26737eb2d5d0d Mon Sep 17 00:00:00 2001 From: Jeremy Evans Date: Sat, 4 May 2019 21:43:22 -0700 Subject: [PATCH] Fix use of numbered parameter inside proc that is default value of optarg This allows cases such as: ```ruby m ->(a = ->{@1}) {a} m.call.call(1) m2 ->(a: ->{@1}) {a} m2.call.call(2) ``` Previously, this would cause a syntax error. [Bug#15789] --- test/ruby/test_syntax.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index f2df65fb6c..c9eaa5af6d 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1312,6 +1312,8 @@ eom assert_equal(3, eval('[1,2].then {@1+@2}')) assert_equal("12", eval('[1,2].then {"#@1#@2"}')) assert_equal(3, eval('->{@1+@2}.call(1,2)')) + assert_equal(4, eval('->(a=->{@1}){a}.call.call(4)')) + assert_equal(5, eval('-> a: ->{@1} {a}.call.call(5)')) assert_syntax_error('proc {|| @1}', /ordinary parameter is defined/) assert_syntax_error('proc {|;a| @1}', /ordinary parameter is defined/) assert_syntax_error("proc {|\n| @1}", /ordinary parameter is defined/)