mod ast;
mod expand;
mod resolve;
mod validate;
use ast::AstErrorSet;
use expand::expand;
use resolve::resolve;
use validate::validate;
#[proc_macro]
pub fn error_set(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
let error_set = syn::parse_macro_input!(tokens as AstErrorSet);
let error_enums = match resolve(error_set) {
Ok(ok) => ok,
Err(err) => {
return err.into_compile_error().into();
}
};
if let Err(err) = validate(&error_enums) {
return err.into_compile_error().into();
}
expand(error_enums).into()
}