From 7e7f1b2f1d786f155ce369f5a7bfa1c439817f68 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Tue, 11 Jan 2022 14:52:05 +0900 Subject: parse.y: numbered parameters should not appear on toplevel. Toplevel includes the top of the method/class/module definitions. --- mrbgems/mruby-compiler/core/parse.y | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/mrbgems/mruby-compiler/core/parse.y b/mrbgems/mruby-compiler/core/parse.y index 5054085df..71cdddf68 100644 --- a/mrbgems/mruby-compiler/core/parse.y +++ b/mrbgems/mruby-compiler/core/parse.y @@ -6422,15 +6422,17 @@ parser_yylex(parser_state *p) nvars = nvars->cdr; } nvar = intn(p->nvars->car); - if (nvar == -1) { - yywarning(p, "numbered parameter used in inner block"); - } - else { - p->nvars->car = nint(nvar > n ? nvar : n); + if (nvar != -2) { /* numbered parameters never appear on toplevel */ + if (nvar == -1) { + yywarning(p, "numbered parameter used in inner block"); + } + else { + p->nvars->car = nint(nvar > n ? nvar : n); + } + pylval.num = n; + p->lstate = EXPR_END; + return tNUMPARAM; } - pylval.num = n; - p->lstate = EXPR_END; - return tNUMPARAM; } } /* fall through */ -- cgit v1.2.3