1
Fork 0

Rollup merge of #136176 - oli-obk:pattern-type-mir-opts, r=compiler-errors

Render pattern types nicely in mir dumps

avoid falling through to the fallback rendering that just does a hex dump

r? ``@scottmcm``

best reviewed commit by commit
This commit is contained in:
León Orell Valerian Liehr 2025-01-29 06:03:24 +01:00 committed by GitHub
commit f49ad60fee
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 0 deletions

View file

@ -1740,6 +1740,10 @@ pub trait PrettyPrinter<'tcx>: Printer<'tcx> + fmt::Write {
" as ",
)?;
}
ty::Pat(base_ty, pat) => {
self.pretty_print_const_scalar_int(int, *base_ty, print_ty)?;
p!(write(" is {pat:?}"));
}
// Nontrivial types with scalar bit representation
_ => {
let print = |this: &mut Self| {

View file

@ -0,0 +1,15 @@
// MIR for `main` after PreCodegen
fn main() -> () {
let mut _0: ();
scope 1 {
debug x => const 2_u32 is 1..=;
scope 2 {
debug y => const 0_u32 is 1..=;
}
}
bb0: {
return;
}
}

View file

@ -0,0 +1,12 @@
#![feature(pattern_types)]
#![feature(pattern_type_macro)]
use std::pat::pattern_type;
// EMIT_MIR pattern_types.main.PreCodegen.after.mir
fn main() {
// CHECK: debug x => const 2_u32 is 1..=
let x: pattern_type!(u32 is 1..) = unsafe { std::mem::transmute(2) };
// CHECK: debug y => const 0_u32 is 1..=
let y: pattern_type!(u32 is 1..) = unsafe { std::mem::transmute(0) };
}