diff options
| author | bors <bors@rust-lang.org> | 2021-03-25 02:26:19 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-03-25 02:26:19 +0000 |
| commit | 26c7e55f47bf3a93a2e369d162dcc02ddf106f3a (patch) | |
| tree | 8b26562d9a9744a79f3d00dd9351e320132f251d /compiler/rustc_errors/src | |
| parent | 07e0e2ec268c140e607e1ac7f49f145612d0f597 (diff) | |
| parent | 67436c11c2a52e124af92e1e7eb91d81200452d7 (diff) | |
| download | rust-26c7e55f47bf3a93a2e369d162dcc02ddf106f3a.tar.gz rust-26c7e55f47bf3a93a2e369d162dcc02ddf106f3a.zip | |
Auto merge of #83454 - JohnTitor:rollup-9ae0565, r=JohnTitor
Rollup of 8 pull requests
Successful merges:
- #83041 (stabilize debug_non_exhaustive)
- #83349 (Remove Option::{unwrap_none, expect_none}.)
- #83420 (Add documentation for rustdoc-gui tests)
- #83421 (Add Result::into_err where the Ok variant is the never type)
- #83427 (small cleanups in rustc_errors / emitter)
- #83434 (Update RELEASES.md)
- #83440 (Use intra-doc link in core::cell)
- #83442 (LLVMWrapper: attractive nuisance macros)
Failed merges:
- #83438 (Update RELEASES.md)
r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_errors/src')
| -rw-r--r-- | compiler/rustc_errors/src/emitter.rs | 34 |
1 files changed, 14 insertions, 20 deletions
diff --git a/compiler/rustc_errors/src/emitter.rs b/compiler/rustc_errors/src/emitter.rs index 9b6f67166bd..66499fbb8da 100644 --- a/compiler/rustc_errors/src/emitter.rs +++ b/compiler/rustc_errors/src/emitter.rs @@ -434,9 +434,15 @@ pub trait Emitter { 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 @@ pub trait Emitter { // 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 @@ pub trait Emitter { .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 @@ impl EmitterWriter { 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 @@ impl EmitterWriter { 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 @@ impl EmitterWriter { 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 @@ impl EmitterWriter { 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 { |
