Skip to content

Commit 2a28013

Browse files
committed
Allow passing primary spans to SharedEmitter
1 parent bba5f7f commit 2a28013

File tree

1 file changed

+7
-2
lines changed
  • compiler/rustc_codegen_ssa/src/back

1 file changed

+7
-2
lines changed

compiler/rustc_codegen_ssa/src/back/write.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1208,6 +1208,7 @@ pub struct CguMessage;
12081208
// - `is_lint`: lints aren't relevant during codegen.
12091209
// - `emitted_at`: not used for codegen diagnostics.
12101210
struct Diagnostic {
1211+
span: Vec<SpanData>,
12111212
level: Level,
12121213
messages: Vec<(DiagMessage, Style)>,
12131214
code: Option<ErrCode>,
@@ -1218,7 +1219,7 @@ struct Diagnostic {
12181219
// A cut-down version of `rustc_errors::Subdiag` that impls `Send`. It's
12191220
// missing the following fields from `rustc_errors::Subdiag`.
12201221
// - `span`: it doesn't impl `Send`.
1221-
pub(crate) struct Subdiagnostic {
1222+
struct Subdiagnostic {
12221223
level: Level,
12231224
messages: Vec<(DiagMessage, Style)>,
12241225
}
@@ -1941,7 +1942,7 @@ impl Emitter for SharedEmitter {
19411942
) {
19421943
// Check that we aren't missing anything interesting when converting to
19431944
// the cut-down local `DiagInner`.
1944-
assert_eq!(diag.span, MultiSpan::new());
1945+
assert!(!diag.span.has_span_labels());
19451946
assert_eq!(diag.suggestions, Suggestions::Enabled(vec![]));
19461947
assert_eq!(diag.sort_span, rustc_span::DUMMY_SP);
19471948
assert_eq!(diag.is_lint, None);
@@ -1950,6 +1951,7 @@ impl Emitter for SharedEmitter {
19501951
let args = mem::replace(&mut diag.args, DiagArgMap::default());
19511952
drop(
19521953
self.sender.send(SharedEmitterMessage::Diagnostic(Diagnostic {
1954+
span: diag.span.primary_spans().iter().map(|span| span.data()).collect::<Vec<_>>(),
19531955
level: diag.level(),
19541956
messages: diag.messages,
19551957
code: diag.code,
@@ -1994,6 +1996,9 @@ impl SharedEmitterMain {
19941996
let dcx = sess.dcx();
19951997
let mut d =
19961998
rustc_errors::DiagInner::new_with_messages(diag.level, diag.messages);
1999+
d.span = MultiSpan::from_spans(
2000+
diag.span.into_iter().map(|span| span.span()).collect(),
2001+
);
19972002
d.code = diag.code; // may be `None`, that's ok
19982003
d.children = diag
19992004
.children

0 commit comments

Comments
 (0)