Diffstat (limited to 'tests/common/builder.rs')
| -rw-r--r-- | tests/common/builder.rs | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/tests/common/builder.rs b/tests/common/builder.rs index 64d77f9..b2bb1ff 100644 --- a/tests/common/builder.rs +++ b/tests/common/builder.rs @@ -1,9 +1,6 @@ use core::fmt::{Debug, Display}; use effectful::{ - bound::{Bool, IsSend, IsSync}, - environment::{DynBind, Environment, NativeForm}, - effective::Effective, - forward_send_sync, + bound::{Bool, DynamicShim, IsSend, IsSync}, effective::Effective, environment::{DynBind, Environment, NativeForm}, forward_send_sync, SendSync }; use mockall::mock; use treaty::{ @@ -14,11 +11,11 @@ use treaty::{ use crate::common::{ContextLock, StaticTypeMap}; -use self::__mock_MockBuilder::__from_seed::Context; - use super::ContextGuard; -#[derive(Debug)] +use crate::common::builder::__mock_MockBuilder::__from_seed::Context; + +#[derive(Debug, SendSync)] pub struct EmptyError; impl Display for EmptyError { @@ -32,21 +29,12 @@ mock! { pub fn from_seed(seed: Seed) -> Self; pub fn build(self) -> Result<Value, Error>; - pub fn traits(&self, id: TypeNameId) -> &Option<Box<dyn for<'ctx> AnyTrait<'ctx, E>>>; - pub fn traits_mut(&mut self, id: TypeNameId) -> &mut Option<Box<dyn for<'ctx> AnyTrait<'ctx, E>>>; + pub fn traits(&self, id: TypeNameId) -> &Option<Box<DynamicShim<dyn for<'ctx> AnyTrait<'ctx, E>>>>; + pub fn traits_mut(&mut self, id: TypeNameId) -> &mut Option<Box<DynamicShim<dyn for<'ctx> AnyTrait<'ctx, E>>>>; } } -// forward_send_sync!({Seed: ('static), Value: ('static), Error: ('static)} {} {E: (Environment)} MockBuilder<Seed, Value, Error, E>); - -unsafe impl<Seed: 'static, Value: 'static, Error: 'static, E: Environment, F: Bool> IsSend<F> - for MockBuilder<Seed, Value, Error, E> -{ -} -unsafe impl<Seed: 'static, Value: 'static, Error: 'static, E: Environment, F: Bool> IsSync<F> - for MockBuilder<Seed, Value, Error, E> -{ -} +forward_send_sync!({Seed: ('static), Value: ('static), Error: ('static)} {} {E: (Environment)} MockBuilder<Seed, Value, Error, E>); impl<Seed, Value, Error: Display + Debug, E: Environment> BuilderTypes<E> for MockBuilder<Seed, Value, Error, E> @@ -103,6 +91,10 @@ impl< impl<'ctx, Seed, Value, Error: Display + Debug, E: Environment> AsVisitor<'ctx, E> for MockBuilder<Seed, Value, Error, E> +where + Seed: DynBind<E>, + Value: DynBind<E>, + Error: DynBind<E>, { fn as_visitor<'a>(&'a mut self) -> DynVisitor<'a, 'ctx, E> where @@ -114,6 +106,10 @@ impl<'ctx, Seed, Value, Error: Display + Debug, E: Environment> AsVisitor<'ctx, impl<'ctx, Seed, Value, Error, E: Environment> AnyTrait<'ctx, E> for MockBuilder<Seed, Value, Error, E> +where + Seed: DynBind<E>, + Value: DynBind<E>, + Error: DynBind<E>, { fn upcast_to_id<'a>( &'a self, @@ -123,7 +119,7 @@ impl<'ctx, Seed, Value, Error, E: Environment> AnyTrait<'ctx, E> 'ctx: 'a, { // Find the first trait handler that wants to upcast. - self.traits(id).as_ref().and_then(|t| t.upcast_to_id(id)) + self.traits(id).as_ref().and_then(|t| t.0.upcast_to_id(id)) } fn upcast_to_id_mut<'a>( @@ -136,7 +132,7 @@ impl<'ctx, Seed, Value, Error, E: Environment> AnyTrait<'ctx, E> // Find the first trait handler that wants to upcast. self.traits_mut(id) .as_mut() - .and_then(|t| t.upcast_to_id_mut(id)) + .and_then(|t| t.0.upcast_to_id_mut(id)) } type Available = () where Self: Sized; |