Fix in visitor doctests
authorRobert Bradshaw <robertwb@math.washington.edu>
Sun, 14 Dec 2008 10:47:49 +0000 (02:47 -0800)
committerRobert Bradshaw <robertwb@math.washington.edu>
Sun, 14 Dec 2008 10:47:49 +0000 (02:47 -0800)
Cython/Compiler/Visitor.py

index 491f467bc518e1f01df2fd758e16dfc35e45e843..0ad6b0de542076d1e842bf2f14c01a7a6a300168 100644 (file)
@@ -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