From: Robert Bradshaw Date: Sun, 14 Dec 2008 10:47:49 +0000 (-0800) Subject: Fix in visitor doctests X-Git-Tag: 0.10.3~3 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=226a8ac66587e9374e8d737526c25e321938fcb8;p=cython.git Fix in visitor doctests --- diff --git a/Cython/Compiler/Visitor.py b/Cython/Compiler/Visitor.py index 491f467b..0ad6b0de 100644 --- a/Cython/Compiler/Visitor.py +++ b/Cython/Compiler/Visitor.py @@ -25,18 +25,18 @@ class BasicVisitor(object): # Must resolve, try entire hierarchy pattern = "visit_%s" mro = inspect.getmro(cls) + handler_method = None for mro_cls in mro: - try: + if hasattr(self, pattern % mro_cls.__name__): handler_method = getattr(self, pattern % mro_cls.__name__) break - except AttributeError: - pass - else: + if handler_method is None: print type(self), type(obj) if hasattr(self, 'access_path'): print self.access_path - print self.access_path[-1][0].pos - print self.access_path[-1][0].__dict__ + if self.access_path: + print self.access_path[-1][0].pos + print self.access_path[-1][0].__dict__ raise RuntimeError("Visitor does not accept object: %s" % obj) #print "Caching " + cls.__name__ self.dispatch_table[cls] = handler_method @@ -60,7 +60,7 @@ class TreeVisitor(BasicVisitor): Example: - >>> class SampleNode: + >>> class SampleNode(object): ... child_attrs = ["head", "body"] ... def __init__(self, value, head=None, body=None): ... self.value = value