golem_rpc_macros/
lib.rs

1#![recursion_limit = "128"]
2extern crate proc_macro;
3
4use proc_macro::TokenStream;
5use quote::quote;
6use syn::parse_macro_input;
7
8mod settings;
9
10#[proc_macro]
11pub fn gen_settings(input: TokenStream) -> TokenStream {
12    let f: syn::File = parse_macro_input!(input as syn::File);
13    match settings::gen_settings(f) {
14        Ok(v) => v.into(),
15        Err(e) => {
16            let err_msg = format!("{}", e);
17            (quote! {
18                compile_error!(#err_msg);
19            })
20            .into()
21        }
22    }
23}