summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-compiler/core/parse.y
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2022-01-11 14:52:05 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2022-01-11 14:52:05 +0900
commit7e7f1b2f1d786f155ce369f5a7bfa1c439817f68 (patch)
treed6eaab3d1e8701ff50c5d8eef6425189e25d47b4 /mrbgems/mruby-compiler/core/parse.y
parent3a30cc27da030cb936acf23354e0109222c08101 (diff)
downloadmruby-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/mruby-compiler/core/parse.y')
-rw-r--r--mrbgems/mruby-compiler/core/parse.y18
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 */