diff options
Diffstat (limited to 'macros/src/factory/type_alias.rs')
-rw-r--r-- | macros/src/factory/type_alias.rs | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/macros/src/factory/type_alias.rs b/macros/src/factory/type_alias.rs deleted file mode 100644 index cfa254f..0000000 --- a/macros/src/factory/type_alias.rs +++ /dev/null @@ -1,68 +0,0 @@ -use quote::ToTokens; -use syn::parse::{Parse, ParseStream}; -use syn::{parse2, ItemType}; - -use crate::fn_trait::FnTrait; - -pub struct FactoryTypeAlias -{ - pub type_alias: ItemType, - pub factory_interface: FnTrait, -} - -impl Parse for FactoryTypeAlias -{ - fn parse(input: ParseStream) -> syn::Result<Self> - { - let type_alias = input - .parse::<ItemType>() - .map_err(|_| input.error("Expected a type alias"))?; - - let aliased_fn_trait = - parse2::<FnTrait>(type_alias.ty.as_ref().to_token_stream())?; - - Ok(Self { - type_alias, - factory_interface: aliased_fn_trait.clone(), - }) - } -} - -#[cfg(test)] -mod tests -{ - use quote::{format_ident, quote}; - use syn::punctuated::Punctuated; - use syn::token::And; - use syn::{Type, TypeReference}; - - use super::*; - use crate::test_utils; - - #[test] - fn can_parse() - { - let input_args = quote! { - type FooFactory = dyn Fn(String, &u32) -> Foo; - }; - - let factory_type_alias = parse2::<FactoryTypeAlias>(input_args).unwrap(); - - assert_eq!( - factory_type_alias.factory_interface.inputs, - Punctuated::from_iter(vec![ - test_utils::create_type(test_utils::create_path(&[ - test_utils::create_path_segment(format_ident!("String"), &[]) - ])), - Type::Reference(TypeReference { - and_token: And::default(), - lifetime: None, - mutability: None, - elem: Box::new(test_utils::create_type(test_utils::create_path(&[ - test_utils::create_path_segment(format_ident!("u32"), &[]) - ]))) - }) - ]) - ); - } -} |