X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_errors%2Flib.rs;h=827e9b831f32d711978c1b0c960fc90aabc4ab49;hb=f998e275cae5320e75871c626c0f88eaef83d5e4;hp=e24e8719133a987574b2d9def7200801d42a9b93;hpb=bf84eb538fd16743240434b3e837b36c35719fee;p=rust.git diff --git a/src/librustc_errors/lib.rs b/src/librustc_errors/lib.rs index e24e8719133..827e9b831f3 100644 --- a/src/librustc_errors/lib.rs +++ b/src/librustc_errors/lib.rs @@ -10,6 +10,7 @@ pub use emitter::ColorConfig; +use log::debug; use Level::*; use emitter::{is_case_difference, Emitter, EmitterWriter}; @@ -174,6 +175,15 @@ fn push_trailing( self.substitutions .iter() + .filter(|subst| { + // Suggestions coming from macros can have malformed spans. This is a heavy + // handed approach to avoid ICEs by ignoring the suggestion outright. + let invalid = subst.parts.iter().any(|item| cm.is_valid_span(item.span).is_err()); + if invalid { + debug!("splice_lines: suggestion contains an invalid span: {:?}", subst); + } + !invalid + }) .cloned() .map(|mut substitution| { // Assumption: all spans are in the same file, and all spans