#![warn(clippy::pedantic)]
#![allow(clippy::match_wildcard_for_single_variants)]
#![allow(clippy::needless_pass_by_value)]
use proc_macro2::TokenStream;
use syn::LitStr;
#[proc_macro_derive(ApiError, attributes(api_error))]
pub fn derive_api_error(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
let input = syn::parse_macro_input!(input as syn::DeriveInput);
crate::expand::expand(input).into()
}
mod expand;
mod parser;
mod kw {
syn::custom_keyword!(inherit);
syn::custom_keyword!(transparent);
syn::custom_keyword!(status_code);
syn::custom_keyword!(message);
}
enum VariantAttr {
Transparent,
InheritMsg { status_code: Option<TokenStream> },
Custom {
msg: Option<LitStr>,
status_code: Option<TokenStream>,
},
}