1use proc_macro2::{Span, TokenStream as TokenStream2};
2
3mod codegen;
4mod parse;
5
6#[proc_macro]
7pub fn wide_log(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
8 let input2 = TokenStream2::from(input);
9 let (overrides, node) = match parse::parse_wide_log_input(&input2) {
10 Ok((o, n)) => (o, n),
11 Err(e) => {
12 return syn::Error::new(Span::call_site(), e)
13 .to_compile_error()
14 .into();
15 }
16 };
17 let tokio = cfg!(feature = "tokio");
18 let uuid = cfg!(feature = "uuid");
19 let tracing = cfg!(feature = "tracing");
20 match codegen::generate(node, overrides, tokio, uuid, tracing) {
21 Ok(ts) => ts.into(),
22 Err(e) => e.to_compile_error().into(),
23 }
24}