use syn::{parse_macro_input, spanned::Spanned};
mod constants;
mod utils;
#[proc_macro_attribute]
pub fn constants(
attr: proc_macro::TokenStream,
item: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
let attr = proc_macro2::TokenStream::from(attr);
if !attr.is_empty() {
return syn::Error::new(
attr.span(),
"The constants macro does not expect any arguments.",
)
.to_compile_error()
.into();
}
let parsed = parse_macro_input!(item as constants::ConstantsInput);
let output: proc_macro2::TokenStream = constants::process(parsed);
output.into()
}