Skip to content

Commit d653431

Browse files
authored
Rollup merge of rust-lang#101782 - JhonnyBillM:refactor-symbol-mangling-diags-migration, r=davidtwco
Update `symbol_mangling` diagnostics migration Addresses comments raised in rust-lang#100831. r? `@eddyb` `@davidtwco`
2 parents 217a82a + c846ba6 commit d653431

File tree

3 files changed

+35
-39
lines changed

3 files changed

+35
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,7 +1 @@
1-
symbol_mangling_invalid_symbol_name = symbol-name({$mangled_formatted})
2-
3-
symbol_mangling_invalid_trait_item = demangling({$demangling_formatted})
4-
5-
symbol_mangling_alt_invalid_trait_item = demangling-alt({$alt_demangling_formatted})
6-
7-
symbol_mangling_invalid_def_path = def-path({$def_path})
1+
symbol_mangling_test_output = {$kind}({$content})
+21-23
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,34 @@
11
//! Errors emitted by symbol_mangling.
22
3+
use rustc_errors::{DiagnosticArgValue, IntoDiagnosticArg};
34
use rustc_macros::SessionDiagnostic;
45
use rustc_span::Span;
56

67
#[derive(SessionDiagnostic)]
7-
#[diag(symbol_mangling::invalid_symbol_name)]
8-
pub struct InvalidSymbolName {
8+
#[diag(symbol_mangling::test_output)]
9+
pub struct TestOutput {
910
#[primary_span]
1011
pub span: Span,
11-
pub mangled_formatted: String,
12+
pub kind: Kind,
13+
pub content: String,
1214
}
1315

14-
#[derive(SessionDiagnostic)]
15-
#[diag(symbol_mangling::invalid_trait_item)]
16-
pub struct InvalidTraitItem {
17-
#[primary_span]
18-
pub span: Span,
19-
pub demangling_formatted: String,
16+
pub enum Kind {
17+
SymbolName,
18+
Demangling,
19+
DemanglingAlt,
20+
DefPath,
2021
}
2122

22-
#[derive(SessionDiagnostic)]
23-
#[diag(symbol_mangling::alt_invalid_trait_item)]
24-
pub struct AltInvalidTraitItem {
25-
#[primary_span]
26-
pub span: Span,
27-
pub alt_demangling_formatted: String,
28-
}
29-
30-
#[derive(SessionDiagnostic)]
31-
#[diag(symbol_mangling::invalid_def_path)]
32-
pub struct InvalidDefPath {
33-
#[primary_span]
34-
pub span: Span,
35-
pub def_path: String,
23+
impl IntoDiagnosticArg for Kind {
24+
fn into_diagnostic_arg(self) -> DiagnosticArgValue<'static> {
25+
let kind = match self {
26+
Kind::SymbolName => "symbol-name",
27+
Kind::Demangling => "demangling",
28+
Kind::DemanglingAlt => "demangling-alt",
29+
Kind::DefPath => "def-path",
30+
}
31+
.into();
32+
DiagnosticArgValue::Str(kind)
33+
}
3634
}

compiler/rustc_symbol_mangling/src/test.rs

+13-9
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//! def-path. This is used for unit testing the code that generates
55
//! paths etc in all kinds of annoying scenarios.
66
7-
use crate::errors::{AltInvalidTraitItem, InvalidDefPath, InvalidSymbolName, InvalidTraitItem};
7+
use crate::errors::{Kind, TestOutput};
88
use rustc_hir::def_id::LocalDefId;
99
use rustc_middle::ty::print::with_no_trimmed_paths;
1010
use rustc_middle::ty::{subst::InternalSubsts, Instance, TyCtxt};
@@ -60,26 +60,30 @@ impl SymbolNamesTest<'_> {
6060
tcx.erase_regions(InternalSubsts::identity_for_item(tcx, def_id)),
6161
);
6262
let mangled = tcx.symbol_name(instance);
63-
tcx.sess.emit_err(InvalidSymbolName {
63+
tcx.sess.emit_err(TestOutput {
6464
span: attr.span,
65-
mangled_formatted: format!("{mangled}"),
65+
kind: Kind::SymbolName,
66+
content: format!("{mangled}"),
6667
});
6768
if let Ok(demangling) = rustc_demangle::try_demangle(mangled.name) {
68-
tcx.sess.emit_err(InvalidTraitItem {
69+
tcx.sess.emit_err(TestOutput {
6970
span: attr.span,
70-
demangling_formatted: format!("{demangling}"),
71+
kind: Kind::Demangling,
72+
content: format!("{demangling}"),
7173
});
72-
tcx.sess.emit_err(AltInvalidTraitItem {
74+
tcx.sess.emit_err(TestOutput {
7375
span: attr.span,
74-
alt_demangling_formatted: format!("{:#}", demangling),
76+
kind: Kind::DemanglingAlt,
77+
content: format!("{:#}", demangling),
7578
});
7679
}
7780
}
7881

7982
for attr in tcx.get_attrs(def_id.to_def_id(), DEF_PATH) {
80-
tcx.sess.emit_err(InvalidDefPath {
83+
tcx.sess.emit_err(TestOutput {
8184
span: attr.span,
82-
def_path: with_no_trimmed_paths!(tcx.def_path_str(def_id.to_def_id())),
85+
kind: Kind::DefPath,
86+
content: with_no_trimmed_paths!(tcx.def_path_str(def_id.to_def_id())),
8387
});
8488
}
8589
}

0 commit comments

Comments
 (0)