r52881 - sandbox/trunk/2to3/fix_has_key.py sandbox/trunk/2to3/fix_print.py sandbox/trunk/2to3/pytree.py
Author: guido.van.rossum Date: Fri Dec 1 00:23:28 2006 New Revision: 52881 Modified: sandbox/trunk/2to3/fix_has_key.py sandbox/trunk/2to3/fix_print.py sandbox/trunk/2to3/pytree.py Log: Change replace() API to not require passing in the parent. Also, n.replace(None) deletes n from its parent. Modified: sandbox/trunk/2to3/fix_has_key.py ============================================================================== --- sandbox/trunk/2to3/fix_has_key.py (original) +++ sandbox/trunk/2to3/fix_has_key.py Fri Dec 1 00:23:28 2006 @@ -101,7 +101,7 @@ new = pytree.Node(syms.comparison, (arg, n_in, pytree.Node(syms.power, nodes[:i]))) # XXX Sometimes we need to parenthesize arg or new. Later. - parent.parent.replace(parent, new) + parent.replace(new) def diff(fn, tree): f = open("@", "w") Modified: sandbox/trunk/2to3/fix_print.py ============================================================================== --- sandbox/trunk/2to3/fix_print.py (original) +++ sandbox/trunk/2to3/fix_print.py Fri Dec 1 00:23:28 2006 @@ -94,7 +94,7 @@ n_stmt = pytree.Node(syms.power, (n_print, n_trailer)) n_stmt.set_prefix(node.get_prefix()) print "Synthesized: >>>%s<<<" % n_stmt - node.parent.replace(node, n_stmt) + node.replace(n_stmt) def add_kwarg(l_nodes, s_kwd, n_expr): Modified: sandbox/trunk/2to3/pytree.py ============================================================================== --- sandbox/trunk/2to3/pytree.py (original) +++ sandbox/trunk/2to3/pytree.py Fri Dec 1 00:23:28 2006 @@ -70,19 +70,24 @@ return "" return self.children[0].get_prefix() - def replace(self, old, new): + def replace(self, new): + if self is new: + return l_children = [] found = False - for ch in self.children: - if ch is old: - assert not found, (self.children, old, new) - l_children.append(new) + for ch in self.parent.children: + if ch is self: + assert not found, (self.parent.children, self, new) + if new is not None: + l_children.append(new) found = True else: l_children.append(ch) - assert found, (self.children, old, new) - self.children = tuple(l_children) - new.parent = self + assert found, (self.children, self, new) + self.parent.children = tuple(l_children) + if new is not None: + new.parent = self.parent + self.parent = None class Leaf(Base):
participants (1)
-
guido.van.rossum