small cleanups in rustc_errors / emitter
This commit is contained in:
parent
673d0db5e3
commit
f1807216f0
@ -434,9 +434,15 @@ fn fix_multispans_in_extern_macros(
|
||||
span: &mut MultiSpan,
|
||||
children: &mut Vec<SubDiagnostic>,
|
||||
) {
|
||||
let source_map = if let Some(ref sm) = source_map {
|
||||
sm
|
||||
} else {
|
||||
return;
|
||||
};
|
||||
debug!("fix_multispans_in_extern_macros: before: span={:?} children={:?}", span, children);
|
||||
for span in iter::once(&mut *span).chain(children.iter_mut().map(|child| &mut child.span)) {
|
||||
self.fix_multispan_in_extern_macros(source_map, span);
|
||||
self.fix_multispan_in_extern_macros(source_map, span);
|
||||
for child in children.iter_mut() {
|
||||
self.fix_multispan_in_extern_macros(source_map, &mut child.span);
|
||||
}
|
||||
debug!("fix_multispans_in_extern_macros: after: span={:?} children={:?}", span, children);
|
||||
}
|
||||
@ -444,16 +450,7 @@ fn fix_multispans_in_extern_macros(
|
||||
// This "fixes" MultiSpans that contain `Span`s pointing to locations inside of external macros.
|
||||
// Since these locations are often difficult to read,
|
||||
// we move these spans from the external macros to their corresponding use site.
|
||||
fn fix_multispan_in_extern_macros(
|
||||
&self,
|
||||
source_map: &Option<Lrc<SourceMap>>,
|
||||
span: &mut MultiSpan,
|
||||
) {
|
||||
let sm = match source_map {
|
||||
Some(ref sm) => sm,
|
||||
None => return,
|
||||
};
|
||||
|
||||
fn fix_multispan_in_extern_macros(&self, source_map: &Lrc<SourceMap>, span: &mut MultiSpan) {
|
||||
// First, find all the spans in external macros and point instead at their use site.
|
||||
let replacements: Vec<(Span, Span)> = span
|
||||
.primary_spans()
|
||||
@ -461,7 +458,7 @@ fn fix_multispan_in_extern_macros(
|
||||
.copied()
|
||||
.chain(span.span_labels().iter().map(|sp_label| sp_label.span))
|
||||
.filter_map(|sp| {
|
||||
if !sp.is_dummy() && sm.is_imported(sp) {
|
||||
if !sp.is_dummy() && source_map.is_imported(sp) {
|
||||
let maybe_callsite = sp.source_callsite();
|
||||
if sp != maybe_callsite {
|
||||
return Some((sp, maybe_callsite));
|
||||
@ -1232,7 +1229,6 @@ fn emit_message_default(
|
||||
is_secondary: bool,
|
||||
) -> io::Result<()> {
|
||||
let mut buffer = StyledBuffer::new();
|
||||
let header_style = if is_secondary { Style::HeaderMsg } else { Style::MainHeaderMsg };
|
||||
|
||||
if !msp.has_primary_spans() && !msp.has_span_labels() && is_secondary && !self.short_message
|
||||
{
|
||||
@ -1257,6 +1253,7 @@ fn emit_message_default(
|
||||
buffer.append(0, &code, Style::Level(*level));
|
||||
buffer.append(0, "]", Style::Level(*level));
|
||||
}
|
||||
let header_style = if is_secondary { Style::HeaderMsg } else { Style::MainHeaderMsg };
|
||||
if *level != Level::FailureNote {
|
||||
buffer.append(0, ": ", header_style);
|
||||
}
|
||||
@ -1470,9 +1467,7 @@ fn emit_message_default(
|
||||
let mut to_add = FxHashMap::default();
|
||||
|
||||
for (depth, style) in depths {
|
||||
if multilines.get(&depth).is_some() {
|
||||
multilines.remove(&depth);
|
||||
} else {
|
||||
if multilines.remove(&depth).is_none() {
|
||||
to_add.insert(depth, style);
|
||||
}
|
||||
}
|
||||
@ -1726,14 +1721,13 @@ fn emit_messages_default(
|
||||
if !self.short_message {
|
||||
draw_col_separator_no_space(&mut buffer, 0, max_line_num_len + 1);
|
||||
}
|
||||
match emit_to_destination(
|
||||
if let Err(e) = emit_to_destination(
|
||||
&buffer.render(),
|
||||
level,
|
||||
&mut self.dst,
|
||||
self.short_message,
|
||||
) {
|
||||
Ok(()) => (),
|
||||
Err(e) => panic!("failed to emit error: {}", e),
|
||||
panic!("failed to emit error: {}", e)
|
||||
}
|
||||
}
|
||||
if !self.short_message {
|
||||
|
Loading…
Reference in New Issue
Block a user