From 6ca9e7cc0785c33f6d382176dbd79d6c91db72fe Mon Sep 17 00:00:00 2001 From: Seiei Miyagi Date: Tue, 23 Apr 2019 00:21:50 +0900 Subject: [PATCH] Disallow numbered parameter as the default value of optional argument [Fix GH-2139] [Bug #15783] --- parse.y | 1 + test/ruby/test_syntax.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/parse.y b/parse.y index a97c01d69a..553f085937 100644 --- a/parse.y +++ b/parse.y @@ -4735,6 +4735,7 @@ f_norm_arg : f_bad_arg | tIDENTIFIER { formal_argument(p, get_id($1)); + p->max_numparam = -1; $$ = $1; } ; diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index 488962b003..257fe07b3c 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1302,6 +1302,7 @@ eom assert_syntax_error('->(x){@1}', /ordinary parameter is defined/) assert_syntax_error('->x{@1}', /ordinary parameter is defined/) assert_syntax_error('->x:@2{}', /ordinary parameter is defined/) + assert_syntax_error('->x=@1{}', /ordinary parameter is defined/) assert_syntax_error('proc {@1 = nil}', /Can't assign to numbered parameter @1/) assert_syntax_error('proc {@01}', /leading zero/) assert_syntax_error('proc {@1_}', /unexpected/)