apollo_errors_derive/
lib.rs1use proc_macro::TokenStream;
7use syn::{DeriveInput, parse_macro_input};
8
9mod codegen;
10mod ir;
11mod parse;
12
13#[proc_macro_derive(
14 Error,
15 attributes(
16 error,
17 diagnostic,
18 extension,
19 http_status,
20 http_header,
21 jsonrpc_code,
22 source,
23 from
24 )
25)]
26pub fn derive_error(input: TokenStream) -> TokenStream {
27 let input = parse_macro_input!(input as DeriveInput);
28
29 match parse::parse_error_derive(input) {
31 Ok(ir) => {
32 let tokens = codegen::generate(&ir);
33 TokenStream::from(tokens)
34 }
35 Err(err) => err.to_compile_error().into(),
36 }
37}
38
39#[cfg(test)]
40mod tests;