def test_next_visitor(visitor):
Visitor = visitor.make_visitor()
@Visitor.mark
class Test1:
pass
@Visitor.mark
class Test2(Test1):
pass
class Visitor1(Visitor):
pass
class Visitor2(Visitor1):
pass
@Visitor2.bind(Test2)
def Visitor2(self, node, next_visitor):
return 'a' + next_visitor('f')
@Visitor1.bind(Test2)
def Visitor1(self, node, next_visitor):
return 'b' + next_visitor('f')
@Visitor2.bind(Test1)
def Visitor2(self, node, next_visitor):
return 'c' + next_visitor('f')
@Visitor1.bind(Test1)
def Visitor1(self, node, next_visitor):
return 'd' + next_visitor('e')
assert Visitor2().visit(Test2()) == 'abcde'
Comments