1.1 --- a/simplify/ast.py Tue Jul 31 01:05:24 2007 +0200
1.2 +++ b/simplify/ast.py Sun Aug 05 21:38:40 2007 +0200
1.3 @@ -73,8 +73,8 @@
1.4 """
1.5
1.6 Visitor.__init__(self)
1.7 - self.subprograms = [] # Subprograms outside the tree.
1.8 - self.structures = [] # Structures/classes.
1.9 + self.subprograms = set() # Subprograms outside the tree.
1.10 + self.structures = set() # Structures/classes.
1.11 self.constants = {} # Constants.
1.12 self.current_subprograms = [] # Current subprograms being processed.
1.13 self.current_structures = [] # Current structures being processed.
1.14 @@ -208,7 +208,8 @@
1.15 subprogram.code = results
1.16
1.17 self.current_subprograms.pop()
1.18 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.19 + self.subprograms.add(subprogram)
1.20 + self.subnames[subprogram.full_name()] = subprogram
1.21
1.22 # Make an invocation of the subprogram.
1.23
1.24 @@ -556,7 +557,8 @@
1.25 subprogram.code = results
1.26
1.27 self.current_subprograms.pop()
1.28 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.29 + self.subprograms.add(subprogram)
1.30 + self.subnames[subprogram.full_name()] = subprogram
1.31
1.32 # Make an invocation of the subprogram.
1.33
1.34 @@ -586,7 +588,7 @@
1.35 bases = class_.bases
1.36
1.37 structure = get_class()(name=class_.name, module=self.module, bases=self.dispatches(bases))
1.38 - self.structures.append(structure)
1.39 + self.structures.add(structure)
1.40 within_class = self.within_class
1.41 self.within_class = 1
1.42
1.43 @@ -603,7 +605,8 @@
1.44 self.within_class = within_class
1.45 self.current_structures.pop()
1.46 self.current_subprograms.pop()
1.47 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.48 + self.subprograms.add(subprogram)
1.49 + self.subnames[subprogram.full_name()] = subprogram
1.50
1.51 # Make a definition of the class associating it with a name.
1.52
1.53 @@ -759,7 +762,8 @@
1.54 subprogram.code = results
1.55
1.56 self.current_subprograms.pop()
1.57 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.58 + self.subprograms.add(subprogram)
1.59 + self.subnames[subprogram.full_name()] = subprogram
1.60
1.61 # Make an invocation of the subprogram.
1.62
1.63 @@ -885,7 +889,8 @@
1.64 # Finish the subprogram definition.
1.65
1.66 self.current_subprograms.pop()
1.67 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.68 + self.subprograms.add(subprogram)
1.69 + self.subnames[subprogram.full_name()] = subprogram
1.70
1.71 # Obtain an iterator for the sequence involved.
1.72 # Then, make an invocation of the subprogram.
1.73 @@ -994,7 +999,8 @@
1.74 subprogram.params = params
1.75 subprogram.star = star
1.76 subprogram.dstar = dstar
1.77 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.78 + self.subprograms.add(subprogram)
1.79 + self.subnames[subprogram.full_name()] = subprogram
1.80
1.81 def visitFunction(self, function):
1.82
1.83 @@ -1185,7 +1191,8 @@
1.84 )
1.85
1.86 self.current_subprograms.pop()
1.87 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.88 + self.subprograms.add(subprogram)
1.89 + self.subnames[subprogram.full_name()] = subprogram
1.90
1.91 # Make an invocation of the subprogram.
1.92
1.93 @@ -1229,7 +1236,8 @@
1.94 ]
1.95
1.96 self.current_subprograms.pop()
1.97 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.98 + self.subprograms.add(subprogram)
1.99 + self.subnames[subprogram.full_name()] = subprogram
1.100
1.101 # Make an invocation of the subprogram.
1.102
1.103 @@ -1365,7 +1373,8 @@
1.104 subprogram.code = results
1.105
1.106 self.current_subprograms.pop()
1.107 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.108 + self.subprograms.add(subprogram)
1.109 + self.subnames[subprogram.full_name()] = subprogram
1.110
1.111 # Make an invocation of the subprogram.
1.112
1.113 @@ -1722,7 +1731,8 @@
1.114 subprogram.code = [test]
1.115
1.116 self.current_subprograms.pop()
1.117 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.118 + self.subprograms.add(subprogram)
1.119 + self.subnames[subprogram.full_name()] = subprogram
1.120
1.121 # Make an invocation of the subprogram.
1.122
1.123 @@ -1836,7 +1846,8 @@
1.124 ]
1.125
1.126 self.current_subprograms.pop()
1.127 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.128 + self.subprograms.add(subprogram)
1.129 + self.subnames[subprogram.full_name()] = subprogram
1.130
1.131 result = InvokeRef(
1.132 binary,
1.133 @@ -1907,7 +1918,8 @@
1.134 ]
1.135
1.136 self.current_subprograms.pop()
1.137 - self.subprograms.append(subprogram); self.subnames[subprogram.full_name()] = subprogram
1.138 + self.subprograms.add(subprogram)
1.139 + self.subnames[subprogram.full_name()] = subprogram
1.140
1.141 result = InvokeRef(
1.142 binary,