parse.y: prohibit numbered parameters as arguments; fix #5605

This commit is contained in:
Yukihiro "Matz" Matsumoto
2021-12-25 23:05:42 +09:00
parent e6b6413932
commit 27e57aad0b
2 changed files with 498 additions and 504 deletions
+5 -8
View File
@@ -2751,6 +2751,7 @@ primary : literal
| tLAMBDA
{
local_nest(p);
nvars_nest(p);
$<num>$ = p->lpar_beg;
p->lpar_beg = ++p->paren_nest;
}
@@ -2764,6 +2765,7 @@ primary : literal
p->lpar_beg = $<num>2;
$$ = new_lambda(p, $3, $5);
local_unnest(p);
nvars_unnest(p);
p->cmdarg_stack = $<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 */
File diff suppressed because it is too large Load Diff