Diffstat (limited to 'tests/common/protocol/tag.rs')
| -rw-r--r-- | tests/common/protocol/tag.rs | 16 |
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), + }) } } |