'''async for i in arange(1):
a = 1''',
'''async with asyncio.Lock() as l:
- a = 1'''
+ a = 1''',
+ '''a = [x async for x in arange(2)][1]''',
+ '''a = 1 in {x async for x in arange(2)}''',
+ '''a = {x:1 async for x in arange(1)}[0]''',
+ '''a = [x async for x in arange(2) async for x in arange(2)][1]''',
+ '''a = [x async for x in (x async for x in arange(5))][1]''',
+ '''a, = [1 for x in {x async for x in arange(1)}]''',
+ '''a = [await asyncio.sleep(0, x) async for x in arange(2)][1]'''
]
policy = maybe_get_event_loop_policy()
try:
PyCodeObject *co = NULL;
comprehension_ty outermost;
PyObject *qualname = NULL;
- int is_async_function = c->u->u_ste->ste_coroutine;
int is_async_generator = 0;
- outermost = (comprehension_ty) asdl_seq_GET(generators, 0);
+ if (IS_TOP_LEVEL_AWAIT(c)) {
+ c->u->u_ste->ste_coroutine = 1;
+ }
+ int is_async_function = c->u->u_ste->ste_coroutine;
+ outermost = (comprehension_ty) asdl_seq_GET(generators, 0);
if (!compiler_enter_scope(c, name, COMPILER_SCOPE_COMPREHENSION,
(void *)e, e->lineno))
{