mirror of
https://github.com/python/cpython.git
synced 2025-12-31 04:23:37 +00:00
bpo-43823: Improve syntax errors for invalid dictionary literals (GH-25378)
This commit is contained in:
parent
23acadcc1c
commit
da74350174
4 changed files with 934 additions and 475 deletions
|
|
@ -650,6 +650,8 @@ dict[expr_ty]:
|
|||
CHECK(asdl_expr_seq*, _PyPegen_get_keys(p, a)),
|
||||
CHECK(asdl_expr_seq*, _PyPegen_get_values(p, a)),
|
||||
EXTRA) }
|
||||
| '{' invalid_double_starred_kvpairs '}'
|
||||
|
||||
dictcomp[expr_ty]:
|
||||
| '{' a=kvpair b=for_if_clauses '}' { _PyAST_DictComp(a->key, a->value, b, EXTRA) }
|
||||
| invalid_dict_comprehension
|
||||
|
|
@ -882,3 +884,12 @@ invalid_elif_stmt:
|
|||
| 'elif' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") }
|
||||
invalid_while_stmt:
|
||||
| 'while' named_expression NEWLINE { RAISE_SYNTAX_ERROR("expected ':'") }
|
||||
|
||||
invalid_double_starred_kvpairs:
|
||||
| ','.double_starred_kvpair+ ',' invalid_kvpair
|
||||
| expression ':' a='*' bitwise_or { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot use a starred expression in a dictionary value") }
|
||||
| expression a=':' &('}'|',') { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "expression expected after dictionary key and ':'") }
|
||||
invalid_kvpair:
|
||||
| a=expression !(':') { RAISE_SYNTAX_ERROR("':' expected after dictionary key") }
|
||||
| expression ':' a='*' bitwise_or { RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "cannot use a starred expression in a dictionary value") }
|
||||
| expression a=':' {RAISE_SYNTAX_ERROR_KNOWN_LOCATION(a, "expression expected after dictionary key and ':'") }
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue