diff --git a/test/bytecode_2.6/05_generator.pyc b/test/bytecode_2.6/05_generator.pyc new file mode 100644 index 00000000..023f7299 Binary files /dev/null and b/test/bytecode_2.6/05_generator.pyc differ diff --git a/test/simple_source/bug26/05_generator.py b/test/simple_source/bug26/05_generator.py new file mode 100644 index 00000000..8ce98a62 --- /dev/null +++ b/test/simple_source/bug26/05_generator.py @@ -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) +)) diff --git a/uncompyle6/semantics/pysource.py b/uncompyle6/semantics/pysource.py index a015a67e..42589511 100644 --- a/uncompyle6/semantics/pysource.py +++ b/uncompyle6/semantics/pysource.py @@ -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