From 27e57aad0beb6b8ed3797f867d5f76da7fc942bb Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Sat, 25 Dec 2021 23:05:42 +0900 Subject: parse.y: prohibit numbered parameters as arguments; fix #5605 --- mrbgems/mruby-compiler/core/parse.y | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) (limited to 'mrbgems/mruby-compiler/core/parse.y') diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 2a8d3a060..de905e33f 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -2751,6 +2751,7 @@ primary : literal | tLAMBDA { local_nest(p); + nvars_nest(p); $$ = p->lpar_beg; p->lpar_beg = ++p->paren_nest; } @@ -2764,6 +2765,7 @@ primary : literal p->lpar_beg = $2; $$ = new_lambda(p, $3, $5); local_unnest(p); + nvars_unnest(p); p->cmdarg_stack = $4; CMDARG_LEXPOP(); } @@ -6426,14 +6428,9 @@ parser_yylex(parser_state *p) if (nvar == -1) { yywarning(p, "numbered parameter used in inner block"); } - if (nvar >= -1) { - pylval.num = n; - p->lstate = EXPR_END; - return tNUMPARAM; - } - else { - yywarning(p, "identifier for numbered parameter; consider another name"); - } + pylval.num = n; + p->lstate = EXPR_END; + return tNUMPARAM; } } /* fall through */ -- cgit v1.2.3