diff options
Diffstat (limited to 'vendor/miette-derive/src/lib.rs')
-rw-r--r-- | vendor/miette-derive/src/lib.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/vendor/miette-derive/src/lib.rs b/vendor/miette-derive/src/lib.rs new file mode 100644 index 0000000..0f7e64e --- /dev/null +++ b/vendor/miette-derive/src/lib.rs @@ -0,0 +1,32 @@ +use quote::quote; +use syn::{parse_macro_input, DeriveInput}; + +use diagnostic::Diagnostic; + +mod code; +mod diagnostic; +mod diagnostic_arg; +mod diagnostic_source; +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, diagnostic_source) +)] +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() +} |