!invalid
})
.cloned()
- .map(|mut substitution| {
+ .filter_map(|mut substitution| {
// Assumption: all spans are in the same file, and all spans
// are disjoint. Sort in ascending order.
substitution.parts.sort_by_key(|part| part.span.lo());
// Find the bounding span.
- let lo = substitution.parts.iter().map(|part| part.span.lo()).min().unwrap();
- let hi = substitution.parts.iter().map(|part| part.span.hi()).max().unwrap();
+ let lo = substitution.parts.iter().map(|part| part.span.lo()).min()?;
+ let hi = substitution.parts.iter().map(|part| part.span.hi()).max()?;
let bounding_span = Span::with_root_ctxt(lo, hi);
- let lines = cm.span_to_lines(bounding_span).unwrap();
+ // The different spans might belong to different contexts, if so ignore suggestion.
+ let lines = cm.span_to_lines(bounding_span).ok()?;
assert!(!lines.lines.is_empty());
// To build up the result, we do this for each span:
while buf.ends_with('\n') {
buf.pop();
}
- (buf, substitution.parts, only_capitalization)
+ Some((buf, substitution.parts, only_capitalization))
})
.collect()
}
/// If true, immediately print bugs registered with `delay_span_bug`.
/// (rustc: see `-Z report-delayed-bugs`)
pub report_delayed_bugs: bool,
- /// show macro backtraces even for non-local macros.
- /// (rustc: see `-Z external-macro-backtrace`)
- pub external_macro_backtrace: bool,
+ /// Show macro backtraces.
+ /// (rustc: see `-Z macro-backtrace`)
+ pub macro_backtrace: bool,
/// If true, identical diagnostics are reported only once.
pub deduplicate_diagnostics: bool,
}
false,
false,
None,
- flags.external_macro_backtrace,
+ flags.macro_backtrace,
));
Self::with_emitter_and_flags(emitter, flags)
}