#![recursion_limit = "256"]
mod args;
#[cfg(feature = "enable")]
mod impls;
#[proc_macro_attribute]
pub fn trace(
args: proc_macro::TokenStream,
item: proc_macro::TokenStream,
) -> proc_macro::TokenStream {
#[cfg(not(feature = "enable"))]
{
use syn::parse_macro_input;
parse_macro_input!(args as args::Args);
item
}
#[cfg(feature = "enable")]
{
use syn::ItemFn;
use syn::parse_macro_input;
let args = parse_macro_input!(args as args::Args);
let input = parse_macro_input!(item as ItemFn);
match impls::gen_trace(args, input) {
Ok(tokens) => tokens.into(),
Err(err) => err.to_compile_error().into(),
}
}
}