# HG changeset patch # User paulb@jeremy # Date 1161447600 -7200 # Node ID 7374e27f9a259ec8f265ec8b17c7ac986dfb3865 # Parent 0f582479c9eaac8f8213ea1c85aa09f308f7cd82 Added original node "anchoring" within augmented assignments. Tidied up the formatting and added docstrings. diff -r 0f582479c9ea -r 7374e27f9a25 simplify.py --- a/simplify.py Sat Oct 21 02:56:25 2006 +0200 +++ b/simplify.py Sat Oct 21 18:20:00 2006 +0200 @@ -603,19 +603,53 @@ return result def visitNot(self, not_): - result = Not(not_, 1, expr=InvokeFunction(not_, expr=LoadAttr(not_, expr=self.dispatch(not_.expr), name="__true__"), args=[], star=None, dstar=None)) + result = Not(not_, 1, + expr=InvokeFunction(not_, + expr=LoadAttr(not_, + expr=self.dispatch(not_.expr), + name="__true__" + ), + args=[], + star=None, + dstar=None + ) + ) return result # Operators. def visitUnaryAdd(self, unaryadd): - return InvokeFunction(unaryadd, 1, expr=LoadAttr(unaryadd, expr=self.dispatch(unaryadd.expr), name="__pos__"), args=[], star=None, dstar=None) + return InvokeFunction(unaryadd, 1, + expr=LoadAttr(unaryadd, + expr=self.dispatch(unaryadd.expr), + name="__pos__" + ), + args=[], + star=None, + dstar=None + ) def visitUnarySub(self, unarysub): - return InvokeFunction(unarysub, 1, expr=LoadAttr(unarysub, expr=self.dispatch(unarysub.expr), name="__neg__"), args=[], star=None, dstar=None) + return InvokeFunction(unarysub, 1, + expr=LoadAttr(unarysub, + expr=self.dispatch(unarysub.expr), + name="__neg__" + ), + args=[], + star=None, + dstar=None + ) def visitInvert(self, invert): - return InvokeFunction(invert, 1, expr=LoadAttr(invert, expr=self.dispatch(invert.expr), name="__invert__"), args=[], star=None, dstar=None) + return InvokeFunction(invert, 1, + expr=LoadAttr(invert, + expr=self.dispatch(invert.expr), + name="__invert__" + ), + args=[], + star=None, + dstar=None + ) def visitAdd(self, add): @@ -669,6 +703,23 @@ } def visitAugAssign(self, augassign): + + """ + Convert the augmented assignment... + + AugAssign (node) -> Name | Getattr | Slice | Subscript + (op) + (expr) + + ...to: + + Assign (code) -> StoreTemp (expr) -> InvokeFunction (expr) -> LoadAttr (expr) -> + (name) -> + StoreName (name) -> + (expr) -> LoadTemp + ReleaseTemp + """ + result = Assign(augassign, 1) expr = self.dispatch(augassign.expr) @@ -708,7 +759,7 @@ expr=InvokeFunction(augassign, args=[expr], star=None, dstar=None, expr=LoadAttr(augassign, - expr=LoadAttr(augassign, + expr=LoadAttr(augassign.node, 1, expr=LoadTemp(augassign, index="expr"), name=augassign.node.attrname ),