From: Stefan Behnel Date: Fri, 3 Jul 2009 19:30:55 +0000 (+0200) Subject: clean up compiled code in Visitor.py X-Git-Tag: 0.12.alpha0~277 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=b5860e730f5386c33272e1a813110503f42566a3;p=cython.git clean up compiled code in Visitor.py --- diff --git a/Cython/Compiler/Visitor.pxd b/Cython/Compiler/Visitor.pxd index 86be5c03..bfe352c4 100644 --- a/Cython/Compiler/Visitor.pxd +++ b/Cython/Compiler/Visitor.pxd @@ -5,9 +5,9 @@ cdef class BasicVisitor: cdef class TreeVisitor(BasicVisitor): cdef public list access_path cpdef visitchild(self, child, parent, attrname, idx) + cpdef visitchildren(self, parent, attrs=*) cdef class VisitorTransform(TreeVisitor): - cdef object _super_visitchildren cpdef visitchildren(self, parent, attrs=*) cpdef recurse_to_children(self, node) diff --git a/Cython/Compiler/Visitor.py b/Cython/Compiler/Visitor.py index 220179d0..82330198 100644 --- a/Cython/Compiler/Visitor.py +++ b/Cython/Compiler/Visitor.py @@ -187,14 +187,13 @@ class TreeVisitor(BasicVisitor): or a list of return values (in the case of multiple children in an attribute)). """ - if parent is None: return None result = {} for attr in parent.child_attrs: if attrs is not None and attr not in attrs: continue child = getattr(parent, attr) if child is not None: - if isinstance(child, list): + if type(child) is list: childretval = [self.visitchild(x, parent, attr, idx) for idx, x in enumerate(child)] else: childretval = self.visitchild(child, parent, attr, None) @@ -223,22 +222,18 @@ class VisitorTransform(TreeVisitor): was not, an exception will be raised. (Typically you want to ensure that you are within a StatListNode or similar before doing this.) """ - def __init__(self): - super(VisitorTransform, self).__init__() - self._super_visitchildren = super(VisitorTransform, self).visitchildren - def visitchildren(self, parent, attrs=None): result = cython.declare(dict) - result = self._super_visitchildren(parent, attrs) + result = TreeVisitor.visitchildren(self, parent, attrs) for attr, newnode in result.iteritems(): - if not isinstance(newnode, list): + if not type(newnode) is list: setattr(parent, attr, newnode) else: # Flatten the list one level and remove any None newlist = [] for x in newnode: if x is not None: - if isinstance(x, list): + if type(x) is list: newlist += x else: newlist.append(x)