Diffstat (limited to 'tests/common/protocol/tag.rs')
| -rw-r--r-- | tests/common/protocol/tag.rs | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/tests/common/protocol/tag.rs b/tests/common/protocol/tag.rs index 96e75b2..a1811df 100644 --- a/tests/common/protocol/tag.rs +++ b/tests/common/protocol/tag.rs @@ -6,12 +6,13 @@ use effectful::{ }; use mockall::mock; use treaty::{ - any::any_trait, + any::AnyTrait, protocol::{ - visitor::{visit_tag, Tag, TagConst, TagKind, TagProto, VisitResult}, + visitor::{visit_tag, ConstTagKind, Tag, TagConst, TagKind, VisitResult}, AsVisitor, DynVisitor, }, - DynWalkerObjSafe, Flow, Walker, + walk::DynWalkerObjSafe, + Flow, Walker, }; use crate::common::Blocking; @@ -24,13 +25,13 @@ mock! { forward_send_sync!({K: (TagKind<E>)} {} {E: (Environment)} MockTagVisitor<K, E>); -any_trait! { - impl['ctx, K][E] MockTagVisitor<K, E> = [ - TagProto<K, E>, - ] where - K: TagKind<E>, - E: Environment, -} +// any_trait! { +// impl['ctx, K][E] MockTagVisitor<K, E> = [ +// TagProto<K, E>, +// ] where +// K: TagKind<E>, +// E: Environment, +// } impl<'ctx, K: TagKind<E>, E: Environment> Tag<'ctx, K, E> for MockTagVisitor<K, E> { fn visit<'a: 'c, 'b: 'c, 'c>( @@ -43,16 +44,22 @@ impl<'ctx, K: TagKind<E>, E: Environment> Tag<'ctx, K, E> for MockTagVisitor<K, } pub trait TagVisitorExt<'ctx> { - fn visit_tag_and_done<'a, const TAG: u64, W: Walker<'ctx, Blocking>>(&'a mut self, walker: W); + fn visit_tag_and_done<'a, T: ConstTagKind<Blocking>, W: Walker<'ctx, Blocking>>( + &'a mut self, + walker: W, + ); } impl<'ctx, T> TagVisitorExt<'ctx> for T where T: AsVisitor<'ctx, Blocking>, { - fn visit_tag_and_done<'a, const TAG: u64, W: Walker<'ctx, Blocking>>(&'a mut self, walker: W) { - let result = visit_tag::<TagConst<TAG>, Blocking, _>(TagConst, self.as_visitor(), walker) - .into_value(); + fn visit_tag_and_done<'a, Tag: ConstTagKind<Blocking>, W: Walker<'ctx, Blocking>>( + &'a mut self, + walker: W, + ) { + let result = + visit_tag::<Tag, Blocking, _>(Tag::NEW, self.as_visitor(), walker).into_value(); assert_eq!(result.unwrap(), VisitResult::Control(Flow::Done)); } |