summaryrefslogtreecommitdiff
path: root/engine-macros/src/reflection.rs
diff options
context:
space:
mode:
Diffstat (limited to 'engine-macros/src/reflection.rs')
-rw-r--r--engine-macros/src/reflection.rs20
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
}