Issue #1573, second attempt:

"def f(*, **kw)" now raises a SyntaxError.
This commit is contained in:
Amaury Forgeot d'Arc 2007-12-09 21:49:48 +00:00
parent 3279b5df3c
commit 40d3a67a19
3 changed files with 9 additions and 13 deletions

View file

@ -649,8 +649,12 @@ handle_keywordonly_args(struct compiling *c, const node *n, int start,
arg_ty arg;
int i = start;
int j = 0; /* index for kwdefaults and kwonlyargs */
assert((kwonlyargs != NULL && kwdefaults != NULL) ||
TYPE(CHILD(n, i)) == DOUBLESTAR);
if (kwonlyargs == NULL) {
ast_error(CHILD(n, start), "named arguments must follow bare *");
return -1;
}
assert(kwdefaults != NULL);
while (i < NCH(n)) {
ch = CHILD(n, i);
switch (TYPE(ch)) {
@ -814,7 +818,8 @@ ast_for_arguments(struct compiling *c, const node *n)
break;
case STAR:
if (i+1 >= NCH(n)) {
ast_error(CHILD(n, i), "no name for vararg");
ast_error(CHILD(n, i),
"named arguments must follow bare *");
goto error;
}
ch = CHILD(n, i+1); /* tfpdef or COMMA */