SpanRange
facility is now public.syn-error
feature so you can opt-out from the syn
dependency.emit_call_site_warning
macro.proc-macro-hack
is now well tested and supported. Not sure about proc-macro-nested
, please fill a request if you need it.emit_call_site_error
.I believe the API can be considered stable because it‘s been a few months without breaking changes, and I also don’t think this crate will receive much further evolution. It's perfect, admit it.
Hence, meet the new, stable release!
#[proc_macro_error]
attributes. Well, you aren't supposed to do that, but I caught myself doing it by accident on one occasion and the behavior was... surprising. Better to handle this smooth.build.rs
no longer fails when rustc
date could not be determined, (thanks to Fabian Möller
for noticing and to Igor Gnatenko
for fixing).proc-macro-error
doesn't depend on syn[full] anymore, the compilation is ~30secs faster.append_dummy
.quote::ToTokens
can be used instead of spans. This allows for high quality error messages.From<syn::Error>
implementation doesn't lose span info anymore, see #6.Just a small intermediate release.
abort_if_dirty
+ warnings bug__pme__suggestions not found
bug__pme__suggestions not found
buglet cond_help = if condition { Some("some help message") else { None } }; abort!( span, // parent span "something's wrong, {} wrongs in total", 10; // main message help = "here's a help for you, {}", "take it"; // unconditional help message help =? cond_help; // conditional help message, must be Option note = note_span => "don't forget the note, {}", "would you?" // notes can have their own span but it's effective only on nightly )
emit_warning
and emit_warning_call_site
. Nightly only, they're ignored on stable.proc-macro-error
delegates to proc_macro::Diagnostic
on nightly.MacroError
is now replaced by Diagnostic
. Its API resembles proc_macro::Diagnostic
.Diagnostic
does not implement From<&str/String>
so Result<T, &str/String>::abort_or_exit()
won't work anymore (nobody used it anyway).macro_error!
macro is replaced with diagnostic!
.proc-macro-error
renders notes exactly just like rustc does.#[proc_macro_error]
anymore, only looking at the signature. This should somewhat decrease expansion time for large functions.span_error
=> abort
call_site_error
=> abort_call_site
filter_macro_errors
was replaced by #[proc_macro_error]
attribute.set_dummy
now takes TokenStream
instead of Option<TokenStream>
emit_error
and emit_call_site_error
macro_error
macro for building errors in format=like style.MacroError
API had been reconsidered. It also now implements quote::ToTokens
.dummy::set_dummy
multi::*
is now deprecated, will be completely rewritten in v0.3trigger_error
replaced with MacroError::trigger
and filter_macro_error_panics
is hidden from docs. This is not quite a breaking change since users weren't supposed to use these functions directly anyway.v1.*
.multi::MultiMacroErrors
and emit them at once.MacroError
implements std::fmt::Display
instead of std::string::ToString
.MacroError::span
inherent method.From<MacroError> for proc_macro/proc_macro2::TokenStream
implementations.AsRef/AsMut<String> for MacroError
implementations.span_error
, call_site_error
and filter_macro_errors
.