py/compile: Raise an error on async with/for outside an async function.

A simple reproducer is:

   async for x in (): x

Before this change, it would cause an assertion error in mpy-cross and
micropython-coverage.
This commit is contained in:
Jeff Epler
2020-03-01 09:40:43 -06:00
committed by Damien George
parent a60ad33641
commit f2dbc91022
3 changed files with 37 additions and 6 deletions

View File

@@ -0,0 +1,19 @@
# test syntax errors using async
try:
exec
except NameError:
print("SKIP")
raise SystemExit
def test_syntax(code):
try:
exec(code)
print("no SyntaxError")
except SyntaxError:
print("SyntaxError")
test_syntax("async for x in (): x")
test_syntax("async with x: x")