Add support for named exprs inside function calls as gen-exps (#3327)

This commit is contained in:
Batuhan Taskaya 2022-10-11 02:54:09 +03:00 committed by GitHub
parent b60b85b234
commit 1c786ee627
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 16 additions and 1 deletions

View File

@ -26,6 +26,10 @@
<!-- Changes to the parser or to version autodetection -->
- Parsing support has been added for walruses inside generator expression that are
passed as function args (for example,
`any(match := my_re.match(text) for text in texts)`) (#3327).
### Performance
<!-- Changes that improve Black's performance. -->

View File

@ -186,7 +186,7 @@ arglist: argument (',' argument)* [',']
# multiple (test comp_for) arguments are blocked; keyword unpackings
# that precede iterable unpackings are blocked; etc.
argument: ( test [comp_for] |
test ':=' test |
test ':=' test [comp_for] |
test 'as' test |
test '=' asexpr_test |
'**' test |

View File

@ -2,3 +2,14 @@
x[a:=0]
x[a:=0, b:=1]
x[5, b:=0]
# Walruses are allowed inside generator expressions on function calls since 3.10.
if any(match := pattern_error.match(s) for s in buffer):
if match.group(2) == data_not_available:
# Error OK to ignore.
pass
f(a := b + c for c in range(10))
f((a := b + c for c in range(10)), x)
f(y=(a := b + c for c in range(10)))
f(x, (a := b + c for c in range(10)), y=z, **q)