bpo-39562: Allow executing asynchronous comprehensions in the asyncio REPL (GH-18968)


Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
(cherry picked from commit 9052f7a41b90f2d34011c8da68f9a4facebc8a97)

Co-authored-by: Batuhan Taşkaya <47358913+isidentical@users.noreply.github.com>
diff --git a/Python/compile.c b/Python/compile.c
index 9cc7654..913ec99 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -4469,11 +4469,14 @@
     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))
     {