Add 3.7 async listcomp

This commit is contained in:
rocky
2019-12-16 00:14:16 -05:00
parent 996719688a
commit d39169dbda
4 changed files with 33 additions and 3 deletions

View File

@@ -1221,6 +1221,8 @@ class SourceWalker(GenericASTTraversal, object):
n = k[0]
pass
pass
elif ast == "listcomp_async":
store = ast[3]
else:
assert n == "list_iter", n
@@ -1287,6 +1289,13 @@ class SourceWalker(GenericASTTraversal, object):
self.preorder(n[1])
else:
self.preorder(n[0])
if node == "listcomp_async":
self.write(" async")
in_node_index = 3
else:
in_node_index = -3
self.write(" for ")
if comp_store:
self.preorder(comp_store)
@@ -1295,7 +1304,7 @@ class SourceWalker(GenericASTTraversal, object):
# FIXME this is all merely approximate
self.write(" in ")
self.preorder(node[-3])
self.preorder(node[in_node_index])
# Here is where we handle nested list iterations.
if ast == "list_comp" and self.version != 3.0:
@@ -1434,9 +1443,14 @@ class SourceWalker(GenericASTTraversal, object):
if node[0].kind == "load_closure":
self.listcomprehension_walk2(node)
else:
self.comprehension_walk_newer(node, 1, 0)
if node == "listcomp_async":
list_iter_index = 5
else:
list_iter_index = 1
self.comprehension_walk_newer(node, list_iter_index, 0)
self.write("]")
self.prune()
n_listcomp_async = n_listcomp
def setcomprehension_walk3(self, node, collection_index):
"""Set comprehensions the way they are done in Python3.