gat_std_proc/
lib.rs

1
2use proc_macro::TokenStream;
3use quote::quote;
4
5mod desugar;
6
7#[proc_macro_attribute]
8pub fn gatify(args: TokenStream, val: TokenStream) -> TokenStream {
9    if !args.is_empty() {
10        return quote!(compile_error!("gatify takes no arguments");).into();
11    }
12
13    match desugar::_impl(val.into()) {
14        Ok(ts) => ts.into(),
15        Err(e) => {
16            let err = e.to_string();
17            quote!(compile_error!(#err);).into()
18        }
19    }
20}