--- /dev/null
+# flags: --minimum-version=3.8
+if (foo := 0):
+ pass
+
+if (foo := 1):
+ pass
+
+if (y := 5 + 5):
+ pass
+
+y = (x := 0)
+
+y += (x := 0)
+
+(y := 5 + 5)
+
+test: int = (test2 := 2)
+
+a, b = (test := (1, 2))
+
+# see also https://github.com/psf/black/issues/2139
+assert (foo := 42 - 12)
+
+foo(x=(y := f(x)))
+
+
+def foo(answer=(p := 42)):
+ ...
+
+
+def foo2(answer: (p := 42) = 5):
+ ...
+
+
+lambda: (x := 1)
+
+a[(x := 12)]
+a[:(x := 13)]
+
+# we don't touch expressions in f-strings but if we do one day, don't break 'em
+f'{(x:=10)}'
+
+
+def a():
+ return (x := 3)
+ await (b := 1)
+ yield (a := 2)
+ raise (c := 3)
+
+def this_is_so_dumb() -> (please := no):
+ pass
+
+async def await_the_walrus():
+ with (x := y):
+ pass
+
+ with (x := y) as z, (a := b) as c:
+ pass
+
+ with (x := await y):
+ pass
+
+ with (x := await a, y := await b):
+ pass
+
+ with ((x := await a, y := await b)):
+ pass
+
+ with (x := await a), (y := await b):
+ pass
+
+
+# output
+if foo := 0:
+ pass
+
+if foo := 1:
+ pass
+
+if y := 5 + 5:
+ pass
+
+y = (x := 0)
+
+y += (x := 0)
+
+(y := 5 + 5)
+
+test: int = (test2 := 2)
+
+a, b = (test := (1, 2))
+
+# see also https://github.com/psf/black/issues/2139
+assert (foo := 42 - 12)
+
+foo(x=(y := f(x)))
+
+
+def foo(answer=(p := 42)):
+ ...
+
+
+def foo2(answer: (p := 42) = 5):
+ ...
+
+
+lambda: (x := 1)
+
+a[(x := 12)]
+a[:(x := 13)]
+
+# we don't touch expressions in f-strings but if we do one day, don't break 'em
+f"{(x:=10)}"
+
+
+def a():
+ return (x := 3)
+ await (b := 1)
+ yield (a := 2)
+ raise (c := 3)
+
+
+def this_is_so_dumb() -> (please := no):
+ pass
+
+
+async def await_the_walrus():
+ with (x := y):
+ pass
+
+ with (x := y) as z, (a := b) as c:
+ pass
+
+ with (x := await y):
+ pass
+
+ with (x := await a, y := await b):
+ pass
+
+ with (x := await a, y := await b):
+ pass
+
+ with (x := await a), (y := await b):
+ pass