Skip to content

Commit

Permalink
Rollup merge of #136176 - oli-obk:pattern-type-mir-opts, r=compiler-e…
Browse files Browse the repository at this point in the history
…rrors

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
  • Loading branch information
fmease authored Jan 29, 2025
2 parents 0b1d717 + fd6713f commit f49ad60
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 0 deletions.
4 changes: 4 additions & 0 deletions compiler/rustc_middle/src/ty/print/pretty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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| {
Expand Down
15 changes: 15 additions & 0 deletions tests/mir-opt/pattern_types.main.PreCodegen.after.mir
Original file line number Diff line number Diff line change
@@ -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;
}
}
12 changes: 12 additions & 0 deletions tests/mir-opt/pattern_types.rs
Original file line number Diff line number Diff line change
@@ -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) };
}

0 comments on commit f49ad60

Please sign in to comment.