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