use syn::{parse_macro_input, spanned::Spanned};
mod keyword {
syn::custom_keyword!(dev_mode);
}
mod expand;
mod parse;
pub fn resource(
attr: proc_macro::TokenStream,
input: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
if !attr.is_empty() {
let msg = "Invalid provider macro call: unexpected attribute. Macro call must be \
bare, such as `#[mashin_sdk::resource]` or `#[resource]`.";
let span = proc_macro2::TokenStream::from(attr).span();
return syn::Error::new(span, msg).to_compile_error().into()
}
let item_mod = parse_macro_input!(input as syn::ItemMod);
match parse::Def::try_from(item_mod) {
Ok(def) => expand::expand(def).into(),
Err(e) => e.to_compile_error().into(),
}
}