From eebf676bf8f76fcdfa610e7e46ab6c135a9cd2d0 Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Sun, 14 Nov 2021 13:28:47 -0500 Subject: fix getting the discriminant of a zero-variant enum --- src/test/ui/consts/const_discriminant.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/test') diff --git a/src/test/ui/consts/const_discriminant.rs b/src/test/ui/consts/const_discriminant.rs index a47f6af0296..a9c0217ae24 100644 --- a/src/test/ui/consts/const_discriminant.rs +++ b/src/test/ui/consts/const_discriminant.rs @@ -25,6 +25,12 @@ enum SingleVariant { const TEST_V: Discriminant = discriminant(&SingleVariant::V); +pub const TEST_VOID: () = { + // This is UB, but CTFE does not check validity so it does not detect this. + unsafe { std::mem::discriminant(&*(&() as *const () as *const Void)); }; +}; + + fn main() { assert_eq!(TEST_A, TEST_A_OTHER); assert_eq!(TEST_A, discriminant(black_box(&Test::A(17)))); -- cgit 1.4.1-3-g733a5