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/src | |
| parent | 178267c701c233542078c09fe6b19802f9642dbd (diff) | |
fix: add missing dummy async injectable impl
Diffstat (limited to 'macros/src')
| -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(); | 
