mirror of https://github.com/zkat/miette.git
29 lines
707 B
Rust
29 lines
707 B
Rust
use quote::quote;
|
|
use syn::{parse_macro_input, DeriveInput};
|
|
|
|
use diagnostic::Diagnostic;
|
|
|
|
mod code;
|
|
mod diagnostic;
|
|
mod diagnostic_arg;
|
|
mod fmt;
|
|
mod forward;
|
|
mod help;
|
|
mod label;
|
|
mod related;
|
|
mod severity;
|
|
mod source_code;
|
|
mod url;
|
|
mod utils;
|
|
|
|
#[proc_macro_derive(Diagnostic, attributes(diagnostic, source_code, label, related, help))]
|
|
pub fn derive_diagnostic(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
|
let input = parse_macro_input!(input as DeriveInput);
|
|
let cmd = match Diagnostic::from_derive_input(input) {
|
|
Ok(cmd) => cmd.gen(),
|
|
Err(err) => return err.to_compile_error().into(),
|
|
};
|
|
// panic!("{:#}", cmd.to_token_stream());
|
|
quote!(#cmd).into()
|
|
}
|