Python 2.5-2.6 generator bug

Adjust for variable position of list iteration node in a genexpr node
This commit is contained in:
rocky
2016-09-03 21:37:32 -04:00
parent 8f95ec9882
commit f4ac13ef0f
3 changed files with 12 additions and 1 deletions

Binary file not shown.

View File

@@ -0,0 +1,9 @@
# From Python 2.6 ast.py
# Bug was finding the last iteration expression in generator-expression handling
#
fields = (1, 2)
rv = '%s(%s' % (__name__.__class__.__name__, ', '.join(
('%s=%s' % field for field in fields)
if __file__ else
(b for a, b in fields)
))

View File

@@ -1247,7 +1247,9 @@ class SourceWalker(GenericASTTraversal, object):
self.write(' for ')
self.preorder(ast[iter_index-1])
self.write(' in ')
self.preorder(node[-3])
iter_expr = node[2] if node[2] == 'expr' else node[-3]
assert iter_expr == 'expr'
self.preorder(iter_expr)
self.preorder(ast[iter_index])
self.prec = p