about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorYuki Okushi <jtitor@2k36.org>2021-11-16 15:59:41 +0900
committerGitHub <noreply@github.com>2021-11-16 15:59:41 +0900
commit6d9c3a1b979273a541ccf1f1c718c8ea733833ed (patch)
treeaff4fe948e4e1ff72060087be19e015b46710f18 /src
parentd44cec3453ce1645c1b17b54b8fbec989d4ab0d3 (diff)
parent9ec88626eac5e3e7c5fd719135545f1ac31fab8b (diff)
downloadrust-6d9c3a1b979273a541ccf1f1c718c8ea733833ed.tar.gz
rust-6d9c3a1b979273a541ccf1f1c718c8ea733833ed.zip
Rollup merge of #90910 - RalfJung:const-discriminant-empty-enum, r=petrochenkov
fix getting the discriminant of a zero-variant enum

Fixes https://github.com/rust-lang/rust/issues/89765
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/consts/const_discriminant.rs7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/test/ui/consts/const_discriminant.rs b/src/test/ui/consts/const_discriminant.rs
index a47f6af0296..f623c5101f4 100644
--- a/src/test/ui/consts/const_discriminant.rs
+++ b/src/test/ui/consts/const_discriminant.rs
@@ -25,6 +25,13 @@ enum SingleVariant {
 
 const TEST_V: Discriminant<SingleVariant> = discriminant(&SingleVariant::V);
 
+pub const TEST_VOID: () = {
+    // This is UB, but CTFE does not check validity so it does not detect this.
+    // This is a regression test for https://github.com/rust-lang/rust/issues/89765.
+    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))));