1.1 --- a/common.py Sat Mar 11 16:46:36 2017 +0100
1.2 +++ b/common.py Sat Mar 11 23:39:20 2017 +0100
1.3 @@ -129,7 +129,6 @@
1.4
1.5 self.astnode = None
1.6 self.encoding = None
1.7 - self.iterators = {}
1.8 self.temp = {}
1.9 self.lambdas = {}
1.10
1.11 @@ -230,19 +229,6 @@
1.12 def next_literal(self):
1.13 self.literals[self.get_namespace_path()] += 1
1.14
1.15 - # Temporary iterator naming.
1.16 -
1.17 - def get_iterator_path(self):
1.18 - return self.in_function and self.get_namespace_path() or self.name
1.19 -
1.20 - def get_iterator_name(self):
1.21 - path = self.get_iterator_path()
1.22 - init_item(self.iterators, path, lambda: 0)
1.23 - return "$i%d" % self.iterators[path]
1.24 -
1.25 - def next_iterator(self):
1.26 - self.iterators[self.get_iterator_path()] += 1
1.27 -
1.28 # Temporary variable naming.
1.29
1.30 def get_temporary_name(self):
1.31 @@ -565,12 +551,15 @@
1.32 the iterator, producing a replacement node for the original.
1.33 """
1.34
1.35 + i0 = self.get_temporary_name()
1.36 + self.next_temporary()
1.37 +
1.38 node = compiler.ast.Stmt([
1.39
1.40 # <next> = {n.list}.__iter__().next
1.41
1.42 compiler.ast.Assign(
1.43 - [compiler.ast.AssName(self.get_iterator_name(), "OP_ASSIGN")],
1.44 + [compiler.ast.AssName(i0, "OP_ASSIGN")],
1.45 compiler.ast.Getattr(
1.46 compiler.ast.CallFunc(
1.47 compiler.ast.Getattr(n.list, "__iter__"),
1.48 @@ -591,7 +580,7 @@
1.49 compiler.ast.Assign(
1.50 [n.assign],
1.51 compiler.ast.CallFunc(
1.52 - compiler.ast.Name(self.get_iterator_name()),
1.53 + compiler.ast.Name(i0),
1.54 []
1.55 )),
1.56 n.body]),
1.57 @@ -600,7 +589,6 @@
1.58 None)
1.59 ])
1.60
1.61 - self.next_iterator()
1.62 self.process_structure_node(node)
1.63
1.64 def process_literal_sequence_node(self, n, name, ref, cls):