Diffstat (limited to 'tests/common/protocol/tag.rs')
-rw-r--r--tests/common/protocol/tag.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/tests/common/protocol/tag.rs b/tests/common/protocol/tag.rs
index 23916d1..4a31f90 100644
--- a/tests/common/protocol/tag.rs
+++ b/tests/common/protocol/tag.rs
@@ -1,9 +1,14 @@
use mockall::mock;
-use treaty::{any::any_trait, effect::{Effect, Future}, protocol::visitor::tag::{DynTag, Tag, TagKind}, DynWalker};
+use treaty::{
+ any::any_trait,
+ effect::{Effect, Future},
+ protocol::visitor::{DynTag, Tag, TagKind, VisitResult},
+ DynWalker,
+};
mock! {
pub TagVisitor<K: TagKind, E> {
- pub fn visit<'a, 'ctx>(&'a mut self, kind: K, walker: DynWalker<'a, 'ctx, E>) -> K::Flow;
+ pub fn visit<'a, 'ctx>(&'a mut self, kind: K, walker: DynWalker<'a, 'ctx, E>) -> VisitResult<()>;
}
}
@@ -20,7 +25,10 @@ impl<'ctx, K: TagKind, E: Effect> Tag<'ctx, K, E> for MockTagVisitor<K, E> {
&'a mut self,
kind: K,
walker: DynWalker<'a, 'ctx, E>,
- ) -> Future<'a, <K as TagKind>::Flow, E> {
- E::ready(self.visit(kind, walker))
+ ) -> Future<'a, VisitResult<DynWalker<'a, 'ctx, E>>, E> {
+ E::ready(match self.visit(kind, walker) {
+ VisitResult::Skipped(_) => VisitResult::Skipped(walker),
+ VisitResult::Control(flow) => VisitResult::Control(flow),
+ })
}
}