Fix a case where numbered parameters should not be allowed
Because `proc{|| @1}` is a syntax error, the following should also be syntax errors: ```ruby proc { | | @1} ``` ```ruby proc { |; a| @1 } ``` This fixes both cases. [Bug #15825]
This commit is contained in:
parent
374c8f4eba
commit
b8f3be295b
1
parse.y
1
parse.y
@ -3307,6 +3307,7 @@ opt_block_param : none
|
||||
block_param_def : '|' opt_bv_decl '|'
|
||||
{
|
||||
p->cur_arg = 0;
|
||||
p->max_numparam = -1;
|
||||
/*%%%*/
|
||||
$$ = 0;
|
||||
/*% %*/
|
||||
|
@ -1313,6 +1313,8 @@ eom
|
||||
assert_equal("12", eval('[1,2].then {"#@1#@2"}'))
|
||||
assert_equal(3, eval('->{@1+@2}.call(1,2)'))
|
||||
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/)
|
||||
assert_syntax_error('proc {|x| @1}', /ordinary parameter is defined/)
|
||||
assert_syntax_error('->(){@1}', /ordinary parameter is defined/)
|
||||
assert_syntax_error('->(x){@1}', /ordinary parameter is defined/)
|
||||
|
Loading…
x
Reference in New Issue
Block a user