diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2022-01-11 14:52:05 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2022-01-11 14:52:05 +0900 |
| commit | 7e7f1b2f1d786f155ce369f5a7bfa1c439817f68 (patch) | |
| tree | d6eaab3d1e8701ff50c5d8eef6425189e25d47b4 /mrbgems | |
| parent | 3a30cc27da030cb936acf23354e0109222c08101 (diff) | |
| download | mruby-7e7f1b2f1d786f155ce369f5a7bfa1c439817f68.tar.gz mruby-7e7f1b2f1d786f155ce369f5a7bfa1c439817f68.zip | |
parse.y: numbered parameters should not appear on toplevel.
Toplevel includes the top of the method/class/module definitions.
Diffstat (limited to 'mrbgems')
| -rw-r--r-- | mrbgems/mruby-compiler/core/parse.y | 18 |
1 files 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 */ |
