mirror of
https://github.com/python/cpython.git
synced 2025-07-24 19:54:21 +00:00
bpo-42381: Allow walrus in set literals and set comprehensions (GH-23332)
Currently walruses are not allowerd in set literals and set comprehensions: >>> {y := 4, 4**2, 3**3} File "<stdin>", line 1 {y := 4, 4**2, 3**3} ^ SyntaxError: invalid syntax but they should be allowed as well per PEP 572
This commit is contained in:
parent
a57b3d30f6
commit
b0aba1fcdc
4 changed files with 1680 additions and 1790 deletions
|
@ -311,7 +311,6 @@ block[asdl_stmt_seq*] (memo):
|
|||
| simple_stmt
|
||||
| invalid_block
|
||||
|
||||
expressions_list[asdl_expr_seq*]: a[asdl_expr_seq*]=','.star_expression+ [','] { a }
|
||||
star_expressions[expr_ty]:
|
||||
| a=star_expression b=(',' c=star_expression { c })+ [','] {
|
||||
_Py_Tuple(CHECK(asdl_expr_seq*, _PyPegen_seq_insert_in_front(p, a, b)), Load, EXTRA) }
|
||||
|
@ -519,9 +518,9 @@ group[expr_ty]:
|
|||
genexp[expr_ty]:
|
||||
| '(' a=named_expression ~ b=for_if_clauses ')' { _Py_GeneratorExp(a, b, EXTRA) }
|
||||
| invalid_comprehension
|
||||
set[expr_ty]: '{' a=expressions_list '}' { _Py_Set(a, EXTRA) }
|
||||
set[expr_ty]: '{' a=star_named_expressions '}' { _Py_Set(a, EXTRA) }
|
||||
setcomp[expr_ty]:
|
||||
| '{' a=expression ~ b=for_if_clauses '}' { _Py_SetComp(a, b, EXTRA) }
|
||||
| '{' a=named_expression ~ b=for_if_clauses '}' { _Py_SetComp(a, b, EXTRA) }
|
||||
| invalid_comprehension
|
||||
dict[expr_ty]:
|
||||
| '{' a=[double_starred_kvpairs] '}' {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue