Crates.io | proc-macro2-diagnostics |
lib.rs | proc-macro2-diagnostics |
version | 0.10.1 |
source | src |
created_at | 2020-10-10 08:01:10.106679 |
updated_at | 2023-07-10 19:13:48.670035 |
description | Diagnostics for proc-macro2. |
homepage | https://github.com/SergioBenitez/proc-macro2-diagnostics |
repository | https://github.com/SergioBenitez/proc-macro2-diagnostics |
max_upload_size | |
id | 297932 |
size | 42,808 |
Diagnostics for stable and nightly proc-macros!
[dependencies]
proc_macro2_diagnostics = "0.10"
SpanDiagnosticExt
and use its methods on a proc_macro2::Span
to
create Diagnostic
s:use syn::spanned::Spanned;
use proc_macro2::TokenStream;
use proc_macro2_diagnostics::{SpanDiagnosticExt, Diagnostic};
fn my_macro(input: TokenStream) -> Result<TokenStream, Diagnostic> {
Err(input.span().error("there's a problem here..."))
}
extern crate proc_macro;
pub fn real_macro(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
match my_macro(tokens.into()) {
Ok(tokens) => tokens.into(),
Err(diag) => diag.emit_as_expr_tokens().into()
}
}
This does the right thing on nightly or stable.
On stable, due to limitations, any top-level, non-error diagnostics are
emitted as errors. This will abort compilation. To avoid this, you may want
to cfg
-gate emitting non-error diagnostics to nightly.
By default, error messages are colored on stable. To disable, disable default features:
[dependencies]
proc_macro2_diagnostics = { version = "0.10", default-features = false }
The compiler always colors diagnostics on nightly.
Licensed under either of the following, at your option: