1.1 --- a/simplify.py Mon Jan 08 23:37:53 2007 +0100
1.2 +++ b/simplify.py Sun Jan 14 03:00:20 2007 +0100
1.3 @@ -276,7 +276,7 @@
1.4 if isinstance(augassign.node, compiler.ast.Name):
1.5 result.code = [
1.6 StoreTemp(
1.7 - expr=InvokeFunction(
1.8 + expr=InvokeFunction( # referenced below
1.9 args=[expr],
1.10 star=None,
1.11 dstar=None,
1.12 @@ -292,6 +292,10 @@
1.13 ReleaseTemp()
1.14 ]
1.15
1.16 + # Make nice annotations for the viewer.
1.17 +
1.18 + augassign._op_call = result.code[0].expr
1.19 +
1.20 # Complicated augmented assignment: lvalue.attr += expr
1.21
1.22 elif isinstance(augassign.node, compiler.ast.Getattr):
1.23 @@ -304,7 +308,7 @@
1.24 expr=self.dispatch(augassign.node.expr)
1.25 ),
1.26 StoreTemp(
1.27 - expr=InvokeFunction(
1.28 + expr=InvokeFunction( # referenced below
1.29 args=[expr], star=None, dstar=None,
1.30 expr=LoadAttr(
1.31 expr=LoadAttr(augassign.node, 1,
1.32 @@ -324,6 +328,10 @@
1.33 ReleaseTemp()
1.34 ]
1.35
1.36 + # Make nice annotations for the viewer.
1.37 +
1.38 + augassign._op_call = result.code[1].expr
1.39 +
1.40 # Complicated augassign using slices: lvalue[lower:upper] += expr
1.41
1.42 elif isinstance(augassign.node, compiler.ast.Slice):
1.43 @@ -344,7 +352,7 @@
1.44 expr=self.dispatch_or_none(augassign.node.upper)
1.45 ),
1.46 StoreTemp(
1.47 - expr=InvokeFunction(
1.48 + expr=InvokeFunction( # referenced below
1.49 args=[expr], star=None, dstar=None,
1.50 expr=LoadAttr(
1.51 expr=self._visitSlice(
1.52 @@ -371,6 +379,10 @@
1.53 ReleaseTemp()
1.54 ]
1.55
1.56 + # Make nice annotations for the viewer.
1.57 +
1.58 + augassign._op_call = result.code[3].expr
1.59 +
1.60 # Complicated augassign using subscripts: lvalue[subs] += expr
1.61
1.62 elif isinstance(augassign.node, compiler.ast.Subscript):
1.63 @@ -381,7 +393,7 @@
1.64 StoreTemp(index="expr", expr=self.dispatch(augassign.node.expr)),
1.65 StoreTemp(index="subs", expr=self._visitSubscriptSubs(augassign.node, augassign.node.subs)),
1.66 StoreTemp(
1.67 - expr=InvokeFunction(
1.68 + expr=InvokeFunction( # referenced below
1.69 args=[expr], star=None, dstar=None,
1.70 expr=LoadAttr(
1.71 expr=self._visitSubscript(
1.72 @@ -406,6 +418,10 @@
1.73 ReleaseTemp()
1.74 ]
1.75
1.76 + # Make nice annotations for the viewer.
1.77 +
1.78 + augassign._op_call = result.code[2].expr
1.79 +
1.80 else:
1.81 raise NotImplementedError, augassign.node.__class__
1.82
2.1 --- a/viewer.py Mon Jan 08 23:37:53 2007 +0100
2.2 +++ b/viewer.py Sun Jan 14 03:00:20 2007 +0100
2.3 @@ -162,7 +162,14 @@
2.4 def visitAugAssign(self, node):
2.5 self.stream.write("<div class='augassign'>\n")
2.6 self.dispatch(node.node)
2.7 + self.stream.write("<span class='operator'>\n")
2.8 self.stream.write("%s\n" % node.op)
2.9 + self._popup_start()
2.10 + self.stream.write("<div class='invocations'>\n")
2.11 + self._invocations_list(node._op_call)
2.12 + self.stream.write("</div>\n")
2.13 + self._popup_end()
2.14 + self.stream.write("</span>\n")
2.15 self.dispatch(node.expr)
2.16 self.stream.write("</div>\n")
2.17