about summary refs log tree commit diff
path: root/tests/ui/structs-enums/issue-38002.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ui/structs-enums/issue-38002.rs')
-rw-r--r--tests/ui/structs-enums/issue-38002.rs35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/ui/structs-enums/issue-38002.rs b/tests/ui/structs-enums/issue-38002.rs
new file mode 100644
index 00000000000..fdb31fc44a1
--- /dev/null
+++ b/tests/ui/structs-enums/issue-38002.rs
@@ -0,0 +1,35 @@
+// run-pass
+#![allow(dead_code)]
+// Check that constant ADTs are codegened OK, part k of N.
+
+enum Bar {
+    C
+}
+
+enum Foo {
+    A {},
+    B {
+        y: usize,
+        z: Bar
+    },
+}
+
+const LIST: [(usize, Foo); 2] = [
+    (51, Foo::B { y: 42, z: Bar::C }),
+    (52, Foo::B { y: 45, z: Bar::C }),
+];
+
+pub fn main() {
+    match LIST {
+        [
+            (51, Foo::B { y: 42, z: Bar::C }),
+            (52, Foo::B { y: 45, z: Bar::C })
+        ] => {}
+        _ => {
+            // I would want to print the enum here, but if
+            // the discriminant is garbage this causes an
+            // `unreachable` and silent process exit.
+            panic!("trivial match failed")
+        }
+    }
+}