1.1 --- a/simplify.py Sat Jul 15 01:21:58 2006 +0200
1.2 +++ b/simplify.py Sat Jul 15 15:26:54 2006 +0200
1.3 @@ -182,7 +182,7 @@
1.4 return self._visitBuiltin(list, "List")
1.5
1.6 def visitDict(self, dict):
1.7 - result = Invoke(expr=LoadName(name="Dict"))
1.8 + result = Invoke(dict, expr=LoadName(name="Dict"))
1.9 args = []
1.10 for key, value in dict.items:
1.11 tuple = Invoke(expr=LoadName(name="Tuple"), star=None, dstar=None)
1.12 @@ -197,7 +197,7 @@
1.13
1.14 # Make a subprogram for the expression and record it outside the main tree.
1.15
1.16 - subprogram = Subprogram(and_, name=hex(id(and_)), acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.17 + subprogram = Subprogram(name=hex(id(and_)), acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.18 self.current_subprograms.append(subprogram)
1.19
1.20 nodes = []
1.21 @@ -226,7 +226,7 @@
1.22
1.23 # Make a subprogram for the expression and record it outside the main tree.
1.24
1.25 - subprogram = Subprogram(or_, name=hex(id(or_)), acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.26 + subprogram = Subprogram(name=hex(id(or_)), acquire_locals=1, returns_value=1, params=[], star=None, dstar=None)
1.27 self.current_subprograms.append(subprogram)
1.28
1.29 nodes = []
1.30 @@ -259,13 +259,13 @@
1.31 # Operators.
1.32
1.33 def visitUnaryAdd(self, unaryadd):
1.34 - return Invoke(expr=LoadAttr(expr=self.dispatch(unaryadd.expr), name="__pos__"), args=[])
1.35 + return Invoke(unaryadd, expr=LoadAttr(expr=self.dispatch(unaryadd.expr), name="__pos__"), args=[])
1.36
1.37 def visitUnarySub(self, unarysub):
1.38 - return Invoke(expr=LoadAttr(expr=self.dispatch(unarysub.expr), name="__neg__"), args=[])
1.39 + return Invoke(unarysub, expr=LoadAttr(expr=self.dispatch(unarysub.expr), name="__neg__"), args=[])
1.40
1.41 def visitInvert(self, invert):
1.42 - return Invoke(expr=LoadAttr(expr=self.dispatch(invert.expr), name="__invert__"), args=[])
1.43 + return Invoke(invert, expr=LoadAttr(expr=self.dispatch(invert.expr), name="__invert__"), args=[])
1.44
1.45 # Assignments.
1.46
1.47 @@ -315,11 +315,11 @@
1.48 store_expr = StoreTemp(index="expr", expr=self.dispatch(slice.expr))
1.49 store_lower = StoreTemp(index="lower", expr=self.dispatch_or_none(slice.lower))
1.50 store_upper = StoreTemp(index="upper", expr=self.dispatch_or_none(slice.upper))
1.51 - node_slice = self._visitSlice(LoadTemp(index="expr"), LoadTemp(index="lower"), LoadTemp(index="upper"), "OP_APPLY")
1.52 + node_slice = self._visitSlice(slice, LoadTemp(index="expr"), LoadTemp(index="lower"), LoadTemp(index="upper"), "OP_APPLY")
1.53 get_incremented = StoreTemp(
1.54 expr=Invoke(expr=LoadAttr(expr=node_slice, name=self.augassign_methods[augassign.op]), args=[expr])
1.55 )
1.56 - store = self._visitSlice(LoadTemp(index="expr"), LoadTemp(index="lower"), LoadTemp(index="upper"), "OP_ASSIGN", LoadTemp())
1.57 + store = self._visitSlice(slice, LoadTemp(index="expr"), LoadTemp(index="lower"), LoadTemp(index="upper"), "OP_ASSIGN", LoadTemp())
1.58 result.code = [store_expr, store_lower, store_upper, get_incremented, store,
1.59 ReleaseTemp(index="expr"), ReleaseTemp(index="lower"), ReleaseTemp(index="upper"), ReleaseTemp()]
1.60
1.61 @@ -333,11 +333,11 @@
1.62 store_expr = StoreTemp(index="expr", expr=self.dispatch(subscript.expr))
1.63 subs = self._visitSubscriptSubs(subscript.subs)
1.64 store_subs = StoreTemp(index="subs", expr=subs)
1.65 - node_subscript = self._visitSubscript(LoadTemp(index="expr"), LoadTemp(index="subs"), "OP_APPLY")
1.66 + node_subscript = self._visitSubscript(subscript, LoadTemp(index="expr"), LoadTemp(index="subs"), "OP_APPLY")
1.67 get_incremented = StoreTemp(
1.68 expr=Invoke(expr=LoadAttr(expr=node_subscript, name=self.augassign_methods[augassign.op]), args=[expr])
1.69 )
1.70 - store = self._visitSubscript(LoadTemp(index="expr"), LoadTemp(index="subs"), "OP_ASSIGN", LoadTemp())
1.71 + store = self._visitSubscript(subscript, LoadTemp(index="expr"), LoadTemp(index="subs"), "OP_ASSIGN", LoadTemp())
1.72 result.code = [store_expr, store_subs, get_incremented, store, ReleaseTemp(index="expr"), ReleaseTemp(index="subs"), ReleaseTemp()]
1.73
1.74 else:
1.75 @@ -354,9 +354,9 @@
1.76
1.77 def visitAssList(self, asslist, in_sequence=0):
1.78 if not in_sequence:
1.79 - expr = LoadTemp(asslist)
1.80 + expr = LoadTemp()
1.81 else:
1.82 - expr = Invoke(asslist, expr=LoadAttr(expr=LoadTemp(), name="next"))
1.83 + expr = Invoke(expr=LoadAttr(expr=LoadTemp(), name="next"))
1.84 result = Assign(asslist)
1.85 store = StoreTemp(expr=Invoke(expr=LoadAttr(name="__iter__", expr=expr)))
1.86 release = ReleaseTemp()
1.87 @@ -367,9 +367,9 @@
1.88
1.89 def _visitAssNameOrAttr(self, node, in_sequence):
1.90 if not in_sequence:
1.91 - return LoadTemp(node)
1.92 + return LoadTemp()
1.93 else:
1.94 - return Invoke(node, expr=LoadAttr(expr=LoadTemp(), name="next"))
1.95 + return Invoke(expr=LoadAttr(expr=LoadTemp(), name="next"))
1.96
1.97 def visitAssName(self, assname, in_sequence=0):
1.98 expr = self._visitAssNameOrAttr(assname, in_sequence)
1.99 @@ -382,7 +382,7 @@
1.100 result = StoreAttr(assattr, name=assattr.attrname, lvalue=lvalue, expr=expr)
1.101 return result
1.102
1.103 - def _visitSlice(self, expr, lower, upper, flags, value=None):
1.104 + def _visitSlice(self, slice, expr, lower, upper, flags, value=None):
1.105 if flags == "OP_ASSIGN":
1.106 args = [value]
1.107 result = Invoke(expr=LoadAttr(expr=expr, name="__setslice__"))
1.108 @@ -400,14 +400,16 @@
1.109 args.insert(0, lower)
1.110 args.insert(1, upper)
1.111
1.112 + result.original = slice
1.113 result.args = args
1.114 return result
1.115
1.116 def visitSlice(self, slice, in_sequence=0):
1.117 value = self._visitAssNameOrAttr(slice, in_sequence)
1.118 - return self._visitSlice(self.dispatch(slice.expr), self.dispatch_or_none(slice.lower), self.dispatch_or_none(slice.upper), slice.flags, value)
1.119 + return self._visitSlice(slice, self.dispatch(slice.expr), self.dispatch_or_none(slice.lower),
1.120 + self.dispatch_or_none(slice.upper), slice.flags, value)
1.121
1.122 - def _visitSubscript(self, expr, subs, flags, value=None):
1.123 + def _visitSubscript(self, subscript, expr, subs, flags, value=None):
1.124 if flags == "OP_ASSIGN":
1.125 args = [value]
1.126 result = Invoke(expr=LoadAttr(expr=expr, name="__setitem__"))
1.127 @@ -424,6 +426,7 @@
1.128
1.129 args.insert(0, subs)
1.130
1.131 + result.original = subscript
1.132 result.args = args
1.133 return result
1.134
1.135 @@ -436,7 +439,7 @@
1.136 def visitSubscript(self, subscript, in_sequence=0):
1.137 value = self._visitAssNameOrAttr(subscript, in_sequence)
1.138 subs = self._visitSubscriptSubs(subscript.subs)
1.139 - return self._visitSubscript(self.dispatch(subscript.expr), subs, subscript.flags, value)
1.140 + return self._visitSubscript(subscript, self.dispatch(subscript.expr), subs, subscript.flags, value)
1.141
1.142 # Invocation and subprogram transformations.
1.143
1.144 @@ -475,7 +478,7 @@
1.145 # Make a subprogram for the function and record it outside the main
1.146 # tree.
1.147
1.148 - subprogram = Subprogram(function, name=function.name, returns_value=1, star=None, dstar=None)
1.149 + subprogram = Subprogram(name=function.name, returns_value=1, star=None, dstar=None)
1.150 self.current_subprograms.append(subprogram)
1.151 subprogram.code = self.dispatch(function.code)
1.152 self.current_subprograms.pop()
1.153 @@ -494,7 +497,7 @@
1.154 # Make a subprogram for the function and record it outside the main
1.155 # tree.
1.156
1.157 - subprogram = Subprogram(lambda_, name=hex(id(lambda_)), returns_value=1, star=None, dstar=None)
1.158 + subprogram = Subprogram(name=hex(id(lambda_)), returns_value=1, star=None, dstar=None)
1.159 self.current_subprograms.append(subprogram)
1.160 subprogram.code = [Return(expr=self.dispatch(lambda_.code))]
1.161 self.current_subprograms.pop()
1.162 @@ -502,7 +505,7 @@
1.163
1.164 # Get the subprogram reference to the lambda.
1.165
1.166 - return LoadRef(ref=subprogram)
1.167 + return LoadRef(lambda_, ref=subprogram)
1.168
1.169 def visitCallFunc(self, callfunc):
1.170 result = Invoke(callfunc, same_frame=0, star=None, dstar=None)
1.171 @@ -518,7 +521,7 @@
1.172
1.173 # Make a subprogram for the block and record it outside the main tree.
1.174
1.175 - subprogram = Subprogram(while_, name=hex(id(while_)), acquire_locals=1, returns_value=0, params=[], star=None, dstar=None)
1.176 + subprogram = Subprogram(name=hex(id(while_)), acquire_locals=1, returns_value=0, params=[], star=None, dstar=None)
1.177 self.current_subprograms.append(subprogram)
1.178
1.179 # Include a conditional statement in the subprogram.
1.180 @@ -550,7 +553,7 @@
1.181
1.182 # Make a subprogram for the block and record it outside the main tree.
1.183
1.184 - subprogram = Subprogram(for_, name=hex(id(for_)), acquire_locals=1, returns_value=0, params=[], star=None, dstar=None)
1.185 + subprogram = Subprogram(name=hex(id(for_)), acquire_locals=1, returns_value=0, params=[], star=None, dstar=None)
1.186 self.current_subprograms.append(subprogram)
1.187
1.188 # Wrap the assignment in a try...except statement.