# HG changeset patch # User paulb@localhost.localdomain # Date 1168740020 -3600 # Node ID 9bb4f6cb38a4823dbc9a2e96bcd8edd6afd84049 # Parent cdf6d3c636eb9fd7b7e8f41576c02aa1141cbebe Added pop-up elements for augmented assignment operators. diff -r cdf6d3c636eb -r 9bb4f6cb38a4 simplify.py --- a/simplify.py Mon Jan 08 23:37:53 2007 +0100 +++ b/simplify.py Sun Jan 14 03:00:20 2007 +0100 @@ -276,7 +276,7 @@ if isinstance(augassign.node, compiler.ast.Name): result.code = [ StoreTemp( - expr=InvokeFunction( + expr=InvokeFunction( # referenced below args=[expr], star=None, dstar=None, @@ -292,6 +292,10 @@ ReleaseTemp() ] + # Make nice annotations for the viewer. + + augassign._op_call = result.code[0].expr + # Complicated augmented assignment: lvalue.attr += expr elif isinstance(augassign.node, compiler.ast.Getattr): @@ -304,7 +308,7 @@ expr=self.dispatch(augassign.node.expr) ), StoreTemp( - expr=InvokeFunction( + expr=InvokeFunction( # referenced below args=[expr], star=None, dstar=None, expr=LoadAttr( expr=LoadAttr(augassign.node, 1, @@ -324,6 +328,10 @@ ReleaseTemp() ] + # Make nice annotations for the viewer. + + augassign._op_call = result.code[1].expr + # Complicated augassign using slices: lvalue[lower:upper] += expr elif isinstance(augassign.node, compiler.ast.Slice): @@ -344,7 +352,7 @@ expr=self.dispatch_or_none(augassign.node.upper) ), StoreTemp( - expr=InvokeFunction( + expr=InvokeFunction( # referenced below args=[expr], star=None, dstar=None, expr=LoadAttr( expr=self._visitSlice( @@ -371,6 +379,10 @@ ReleaseTemp() ] + # Make nice annotations for the viewer. + + augassign._op_call = result.code[3].expr + # Complicated augassign using subscripts: lvalue[subs] += expr elif isinstance(augassign.node, compiler.ast.Subscript): @@ -381,7 +393,7 @@ StoreTemp(index="expr", expr=self.dispatch(augassign.node.expr)), StoreTemp(index="subs", expr=self._visitSubscriptSubs(augassign.node, augassign.node.subs)), StoreTemp( - expr=InvokeFunction( + expr=InvokeFunction( # referenced below args=[expr], star=None, dstar=None, expr=LoadAttr( expr=self._visitSubscript( @@ -406,6 +418,10 @@ ReleaseTemp() ] + # Make nice annotations for the viewer. + + augassign._op_call = result.code[2].expr + else: raise NotImplementedError, augassign.node.__class__ diff -r cdf6d3c636eb -r 9bb4f6cb38a4 viewer.py --- a/viewer.py Mon Jan 08 23:37:53 2007 +0100 +++ b/viewer.py Sun Jan 14 03:00:20 2007 +0100 @@ -162,7 +162,14 @@ def visitAugAssign(self, node): self.stream.write("
\n") self.dispatch(node.node) + self.stream.write("\n") self.stream.write("%s\n" % node.op) + self._popup_start() + self.stream.write("
\n") + self._invocations_list(node._op_call) + self.stream.write("
\n") + self._popup_end() + self.stream.write("
\n") self.dispatch(node.expr) self.stream.write("
\n")