mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
bpo-43914: Correctly highlight SyntaxError exceptions for invalid generator expression in function calls (GH-28576)
This commit is contained in:
parent
a22be4943c
commit
e5f13ce5b4
5 changed files with 31 additions and 8 deletions
|
|
@ -2551,8 +2551,17 @@ void *_PyPegen_arguments_parsing_error(Parser *p, expr_ty e) {
|
|||
return RAISE_SYNTAX_ERROR(msg);
|
||||
}
|
||||
|
||||
|
||||
static inline expr_ty
|
||||
_PyPegen_get_last_comprehension_item(comprehension_ty comprehension) {
|
||||
if (comprehension->ifs == NULL || asdl_seq_LEN(comprehension->ifs) == 0) {
|
||||
return comprehension->iter;
|
||||
}
|
||||
return PyPegen_last_item(comprehension->ifs, expr_ty);
|
||||
}
|
||||
|
||||
void *
|
||||
_PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args)
|
||||
_PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args, asdl_comprehension_seq *comprehensions)
|
||||
{
|
||||
/* The rule that calls this function is 'args for_if_clauses'.
|
||||
For the input f(L, x for x in y), L and x are in args and
|
||||
|
|
@ -2566,8 +2575,11 @@ _PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
return RAISE_SYNTAX_ERROR_STARTING_FROM(
|
||||
comprehension_ty last_comprehension = PyPegen_last_item(comprehensions, comprehension_ty);
|
||||
|
||||
return RAISE_SYNTAX_ERROR_KNOWN_RANGE(
|
||||
(expr_ty) asdl_seq_GET(args->v.Call.args, len - 1),
|
||||
_PyPegen_get_last_comprehension_item(last_comprehension),
|
||||
"Generator expression must be parenthesized"
|
||||
);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue