Skip to content

Commit b370e97

Browse files
committed
Try to evaluate constants in legacy mangling
1 parent 6a9899c commit b370e97

File tree

4 files changed

+13
-9
lines changed

4 files changed

+13
-9
lines changed

compiler/rustc_symbol_mangling/src/legacy.rs

+4
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use rustc_middle::bug;
88
use rustc_middle::ty::print::{PrettyPrinter, Print, PrintError, Printer};
99
use rustc_middle::ty::{
1010
self, GenericArg, GenericArgKind, Instance, ReifyReason, Ty, TyCtxt, TypeVisitableExt,
11+
TypingEnv,
1112
};
1213
use tracing::debug;
1314

@@ -239,6 +240,8 @@ impl<'tcx> Printer<'tcx> for SymbolPrinter<'tcx> {
239240
self.write_str("[")?;
240241
self.print_type(ty)?;
241242
self.write_str("; ")?;
243+
let size =
244+
self.tcx.normalize_erasing_regions(TypingEnv::fully_monomorphized(), size);
242245
if let Some(size) = size.try_to_target_usize(self.tcx()) {
243246
write!(self, "{size}")?
244247
} else if let ty::ConstKind::Param(param) = size.kind() {
@@ -272,6 +275,7 @@ impl<'tcx> Printer<'tcx> for SymbolPrinter<'tcx> {
272275
}
273276

274277
fn print_const(&mut self, ct: ty::Const<'tcx>) -> Result<(), PrintError> {
278+
let ct = self.tcx.normalize_erasing_regions(TypingEnv::fully_monomorphized(), ct);
275279
// only print integers
276280
match ct.kind() {
277281
ty::ConstKind::Value(ty, ty::ValTree::Leaf(scalar)) if ty.is_integral() => {

tests/ui/symbol-names/types.legacy.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -502,19 +502,19 @@ error: demangling-alt(a::b::Type<[T; N]>)
502502
LL | #[rustc_symbol_name]
503503
| ^^^^^^^^^^^^^^^^^^^^
504504

505-
error: symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$_$u5d$$GT$17h[HASH]E)
505+
error: symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$17h[HASH]E)
506506
--> $DIR/types.rs:272:5
507507
|
508508
LL | #[rustc_symbol_name]
509509
| ^^^^^^^^^^^^^^^^^^^^
510510

511-
error: demangling(a::b::Type<[u8; _]>::h[HASH])
511+
error: demangling(a::b::Type<[u8; 0]>::h[HASH])
512512
--> $DIR/types.rs:272:5
513513
|
514514
LL | #[rustc_symbol_name]
515515
| ^^^^^^^^^^^^^^^^^^^^
516516

517-
error: demangling-alt(a::b::Type<[u8; _]>)
517+
error: demangling-alt(a::b::Type<[u8; 0]>)
518518
--> $DIR/types.rs:272:5
519519
|
520520
LL | #[rustc_symbol_name]

tests/ui/symbol-names/types.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -270,9 +270,9 @@ pub fn b() {
270270
const ZERO: usize = 0;
271271

272272
#[rustc_symbol_name]
273-
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$_$u5d$$GT$
274-
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<[u8; _]>::
275-
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<[u8; _]>)
273+
//[legacy,verbose-legacy]~^ ERROR symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$
274+
//[legacy,verbose-legacy]~| ERROR demangling(a::b::Type<[u8; 0]>::
275+
//[legacy,verbose-legacy]~| ERROR demangling-alt(a::b::Type<[u8; 0]>)
276276
//[v0]~^^^^ ERROR symbol-name(_RMsq_NvCsCRATE_HASH_1a1bINtB<REF>_4TypeAhj0_E)
277277
//[v0]~| ERROR ::b::Type<[u8; 0usize]>>)
278278
//[v0]~| ERROR demangling-alt(<a::b::Type<[u8; 0]>>)

tests/ui/symbol-names/types.verbose-legacy.stderr

+3-3
Original file line numberDiff line numberDiff line change
@@ -502,19 +502,19 @@ error: demangling-alt(a::b::Type<[T; N]>)
502502
LL | #[rustc_symbol_name]
503503
| ^^^^^^^^^^^^^^^^^^^^
504504

505-
error: symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$_$u5d$$GT$17h[HASH]E)
505+
error: symbol-name(_ZN1a1b35Type$LT$$u5b$u8$u3b$$u20$0$u5d$$GT$17h[HASH]E)
506506
--> $DIR/types.rs:272:5
507507
|
508508
LL | #[rustc_symbol_name]
509509
| ^^^^^^^^^^^^^^^^^^^^
510510

511-
error: demangling(a::b::Type<[u8; _]>::h[HASH])
511+
error: demangling(a::b::Type<[u8; 0]>::h[HASH])
512512
--> $DIR/types.rs:272:5
513513
|
514514
LL | #[rustc_symbol_name]
515515
| ^^^^^^^^^^^^^^^^^^^^
516516

517-
error: demangling-alt(a::b::Type<[u8; _]>)
517+
error: demangling-alt(a::b::Type<[u8; 0]>)
518518
--> $DIR/types.rs:272:5
519519
|
520520
LL | #[rustc_symbol_name]

0 commit comments

Comments
 (0)