Skip to content

Commit 7e7f1b2

Browse files
committed
parse.y: numbered parameters should not appear on toplevel.
Toplevel includes the top of the method/class/module definitions.
1 parent 3a30cc2 commit 7e7f1b2

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

mrbgems/mruby-compiler/core/parse.y

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6422,15 +6422,17 @@ parser_yylex(parser_state *p)
64226422
nvars = nvars->cdr;
64236423
}
64246424
nvar = intn(p->nvars->car);
6425-
if (nvar == -1) {
6426-
yywarning(p, "numbered parameter used in inner block");
6427-
}
6428-
else {
6429-
p->nvars->car = nint(nvar > n ? nvar : n);
6425+
if (nvar != -2) { /* numbered parameters never appear on toplevel */
6426+
if (nvar == -1) {
6427+
yywarning(p, "numbered parameter used in inner block");
6428+
}
6429+
else {
6430+
p->nvars->car = nint(nvar > n ? nvar : n);
6431+
}
6432+
pylval.num = n;
6433+
p->lstate = EXPR_END;
6434+
return tNUMPARAM;
64306435
}
6431-
pylval.num = n;
6432-
p->lstate = EXPR_END;
6433-
return tNUMPARAM;
64346436
}
64356437
}
64366438
/* fall through */

0 commit comments

Comments
 (0)