diff options
author | HampusM <hampus@hampusmat.com> | 2023-01-30 22:25:02 +0100 |
---|---|---|
committer | HampusM <hampus@hampusmat.com> | 2023-01-30 22:25:02 +0100 |
commit | e8a2475b2f07da14c45a429b2b52e75322d0efb5 (patch) | |
tree | ac359083d6cacf51d7bb6ef6d6e1686ad04504c4 /macros | |
parent | 178267c701c233542078c09fe6b19802f9642dbd (diff) |
fix: add missing dummy async injectable impl
Diffstat (limited to 'macros')
-rw-r--r-- | macros/src/injectable/implementation.rs | 37 | ||||
-rw-r--r-- | macros/src/lib.rs | 6 |
2 files changed, 42 insertions, 1 deletions
diff --git a/macros/src/injectable/implementation.rs b/macros/src/injectable/implementation.rs index 0fd73de..e81dd2d 100644 --- a/macros/src/injectable/implementation.rs +++ b/macros/src/injectable/implementation.rs @@ -328,6 +328,43 @@ impl<Dep: IDependency> InjectableImpl<Dep> } } + #[cfg(not(tarpaulin_include))] + pub fn expand_dummy_async_impl(&self) -> proc_macro2::TokenStream + { + let generics = &self.generics; + let self_type = &self.self_type; + + let di_container_var = format_ident!("{}", DI_CONTAINER_VAR_NAME); + let dependency_history_var = format_ident!("{}", DEPENDENCY_HISTORY_VAR_NAME); + + quote! { + impl #generics syrette::interfaces::async_injectable::AsyncInjectable< + syrette::di_container::asynchronous::AsyncDIContainer, + syrette::dependency_history::DependencyHistory + > for #self_type + { + fn resolve<'di_container, 'fut>( + #di_container_var: &'di_container std::sync::Arc< + syrette::di_container::asynchronous::AsyncDIContainer + >, + mut #dependency_history_var: syrette::dependency_history::DependencyHistory + ) -> syrette::future::BoxFuture< + 'fut, + Result< + syrette::ptr::TransientPtr<Self>, + syrette::errors::injectable::InjectableError + > + > + where + Self: Sized + 'fut, + 'di_container: 'fut + { + unimplemented!(); + } + } + } + } + fn create_get_dep_method_calls( dependencies: &[Dep], is_async: bool, diff --git a/macros/src/lib.rs b/macros/src/lib.rs index 4c78204..04720c1 100644 --- a/macros/src/lib.rs +++ b/macros/src/lib.rs @@ -174,7 +174,11 @@ pub fn injectable(args_stream: TokenStream, input_stream: TokenStream) -> TokenS let injectable_impl = InjectableImpl::<Dependency>::parse(input_stream).unwrap_or_abort(); - set_dummy(injectable_impl.expand_dummy_blocking_impl()); + set_dummy(if is_async_flag.is_on() { + injectable_impl.expand_dummy_async_impl() + } else { + injectable_impl.expand_dummy_blocking_impl() + }); injectable_impl.validate().unwrap_or_abort(); |