diff options
Diffstat (limited to 'engine-macros/src/reflection.rs')
| -rw-r--r-- | engine-macros/src/reflection.rs | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/engine-macros/src/reflection.rs b/engine-macros/src/reflection.rs index 2180084..ad1df04 100644 --- a/engine-macros/src/reflection.rs +++ b/engine-macros/src/reflection.rs @@ -14,8 +14,8 @@ pub fn derive(input: proc_macro2::TokenStream) -> proc_macro2::TokenStream let options = get_options(&input); match input { - syn::Item::Struct(input) => struct_impl::generate(input, options), - syn::Item::Enum(input) => enum_impl::generate(input, options), + syn::Item::Struct(input) => struct_impl::generate(&input, &options), + syn::Item::Enum(input) => enum_impl::generate(&input, &options), _ => panic!("Invalid input"), } } @@ -57,17 +57,19 @@ pub fn get_options(input: &syn::Item) -> OptionsAttr } }; - if options.impl_with_generics.is_empty() && !generic_params.is_empty() { - panic!(concat!( + assert!( + !options.impl_with_generics.is_empty() || generic_params.is_empty(), + concat!( "Generic types deriving Reflection must specify which ", "generics to use in the generated impl(s) using the 'reflection' attribute\n", "For example: #[reflection(impl_with_generics(<u32, String>, <u8, u16>))]" - )); - } + ) + ); - if !options.impl_with_generics.is_empty() && generic_params.is_empty() { - panic!("Specifying 'impl_with_generics' for non-generic types is not allowed"); - } + assert!( + options.impl_with_generics.is_empty() || !generic_params.is_empty(), + "Specifying 'impl_with_generics' for non-generic types is not allowed" + ); options } |
