mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
gh-129515: Clarify syntax error messages for conditional expressions (#129880)
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com> Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com> Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
51d4bf1e0e
commit
bcc9a5dddb
5 changed files with 2015 additions and 1621 deletions
|
@ -117,12 +117,12 @@ simple_stmt[stmt_ty] (memo):
|
|||
| &'return' return_stmt
|
||||
| &('import' | 'from') import_stmt
|
||||
| &'raise' raise_stmt
|
||||
| 'pass' { _PyAST_Pass(EXTRA) }
|
||||
| &'pass' pass_stmt
|
||||
| &'del' del_stmt
|
||||
| &'yield' yield_stmt
|
||||
| &'assert' assert_stmt
|
||||
| 'break' { _PyAST_Break(EXTRA) }
|
||||
| 'continue' { _PyAST_Continue(EXTRA) }
|
||||
| &'break' break_stmt
|
||||
| &'continue' continue_stmt
|
||||
| &'global' global_stmt
|
||||
| &'nonlocal' nonlocal_stmt
|
||||
|
||||
|
@ -181,6 +181,15 @@ raise_stmt[stmt_ty]:
|
|||
| 'raise' a=expression b=['from' z=expression { z }] { _PyAST_Raise(a, b, EXTRA) }
|
||||
| 'raise' { _PyAST_Raise(NULL, NULL, EXTRA) }
|
||||
|
||||
pass_stmt[stmt_ty]:
|
||||
| 'pass' { _PyAST_Pass(EXTRA) }
|
||||
|
||||
break_stmt[stmt_ty]:
|
||||
| 'break' { _PyAST_Break(EXTRA) }
|
||||
|
||||
continue_stmt[stmt_ty]:
|
||||
| 'continue' { _PyAST_Continue(EXTRA) }
|
||||
|
||||
global_stmt[stmt_ty]: 'global' a[asdl_expr_seq*]=','.NAME+ {
|
||||
_PyAST_Global(CHECK(asdl_identifier_seq*, _PyPegen_map_names_to_ids(p, a)), EXTRA) }
|
||||
|
||||
|
@ -1187,6 +1196,10 @@ invalid_expression:
|
|||
_PyPegen_check_legacy_stmt(p, a) ? NULL : p->tokens[p->mark-1]->level == 0 ? NULL :
|
||||
RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "invalid syntax. Perhaps you forgot a comma?") }
|
||||
| a=disjunction 'if' b=disjunction !('else'|':') { RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "expected 'else' after 'if' expression") }
|
||||
| a=disjunction 'if' b=disjunction 'else' !expression {
|
||||
RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN("expected expression after 'else', but statement is given") }
|
||||
| a[stmt_ty]=(pass_stmt|break_stmt|continue_stmt) 'if' b=disjunction 'else' c=simple_stmt {
|
||||
RAISE_SYNTAX_ERROR_KNOWN_LOCATION (a, "expected expression before 'if', but statement is given") }
|
||||
| a='lambda' [lambda_params] b=':' &FSTRING_MIDDLE {
|
||||
RAISE_SYNTAX_ERROR_KNOWN_RANGE(a, b, "f-string: lambda expressions are not allowed without parentheses") }
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue