From 2a6dea8d6aecc9b7bb34f2362a2141da06eb27d7 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 14 Nov 2021 13:54:43 -0500 Subject: [PATCH] test for mem::discriminant checking validity --- tests/compile-fail/validity/discriminant.rs | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 tests/compile-fail/validity/discriminant.rs diff --git a/tests/compile-fail/validity/discriminant.rs b/tests/compile-fail/validity/discriminant.rs new file mode 100644 index 0000000000..cdd1c02999 --- /dev/null +++ b/tests/compile-fail/validity/discriminant.rs @@ -0,0 +1,7 @@ +// error-pattern: type validation failed: encountered 0x02, but expected a boolean +#[allow(enum_intrinsics_non_enums)] +fn main() { + let i = 2u8; + // See https://github.com/rust-lang/rust/pull/89764: reading the discriminant asserts full validity. + std::mem::discriminant(unsafe { &*(&i as *const _ as *const bool) }); +}