mirror of
https://github.com/python/cpython
synced 2026-09-29 12:10:30 +03:00
bpo-47212: Improve error messages for un-parenthesized generator expressions (GH-32302)
This commit is contained in:
parent
f1606a5ba5
commit
aa0f056a00
7 changed files with 28 additions and 8 deletions
|
|
@ -1145,7 +1145,7 @@ _PyPegen_get_expr_name(expr_ty e)
|
|||
}
|
||||
}
|
||||
|
||||
static inline expr_ty
|
||||
expr_ty
|
||||
_PyPegen_get_last_comprehension_item(comprehension_ty comprehension) {
|
||||
if (comprehension->ifs == NULL || asdl_seq_LEN(comprehension->ifs) == 0) {
|
||||
return comprehension->iter;
|
||||
|
|
|
|||
6
Parser/parser.c
generated
6
Parser/parser.c
generated
|
|
@ -18968,7 +18968,7 @@ invalid_arguments_rule(Parser *p)
|
|||
)
|
||||
{
|
||||
D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
|
||||
_res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , comprehension_ty ) -> target , "Generator expression must be parenthesized" );
|
||||
_res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
|
||||
if (_res == NULL && PyErr_Occurred()) {
|
||||
p->error_indicator = 1;
|
||||
p->level--;
|
||||
|
|
@ -19061,7 +19061,7 @@ invalid_arguments_rule(Parser *p)
|
|||
)
|
||||
{
|
||||
D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
|
||||
_res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , asdl_seq_GET ( b , b -> size - 1 ) -> target , "Generator expression must be parenthesized" );
|
||||
_res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
|
||||
if (_res == NULL && PyErr_Occurred()) {
|
||||
p->error_indicator = 1;
|
||||
p->level--;
|
||||
|
|
@ -22190,7 +22190,7 @@ invalid_except_stmt_indent_rule(Parser *p)
|
|||
)
|
||||
{
|
||||
D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
|
||||
_res = RAISE_SYNTAX_ERROR ( "expected an indented block after except statement on line %d" , a -> lineno );
|
||||
_res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
|
||||
if (_res == NULL && PyErr_Occurred()) {
|
||||
p->error_indicator = 1;
|
||||
p->level--;
|
||||
|
|
|
|||
|
|
@ -324,6 +324,7 @@ int _PyPegen_check_barry_as_flufl(Parser *, Token *);
|
|||
int _PyPegen_check_legacy_stmt(Parser *p, expr_ty t);
|
||||
mod_ty _PyPegen_make_module(Parser *, asdl_stmt_seq *);
|
||||
void *_PyPegen_arguments_parsing_error(Parser *, expr_ty);
|
||||
expr_ty _PyPegen_get_last_comprehension_item(comprehension_ty comprehension);
|
||||
void *_PyPegen_nonparen_genexp_in_call(Parser *p, expr_ty args, asdl_comprehension_seq *comprehensions);
|
||||
|
||||
// Parser API
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue