about summary refs log tree commit diff
path: root/src/test/ui/repr/aligned_enum_cast.rs
diff options
context:
space:
mode:
authorMatthias Krüger <matthias.krueger@famsik.de>2022-11-04 06:40:33 +0100
committerGitHub <noreply@github.com>2022-11-04 06:40:33 +0100
commite6eaa2fe69c3bfbece0e1323d1002ecab289dd1d (patch)
tree2d70bd3de7c0b7a18c77a3815c677fe07dba1604 /src/test/ui/repr/aligned_enum_cast.rs
parent61c6cdb5f4fc18489c17613c7a4caf7356308239 (diff)
parent35b16d01ce149716a8d1443fff6a4c6815f3e56d (diff)
downloadrust-e6eaa2fe69c3bfbece0e1323d1002ecab289dd1d.tar.gz
rust-e6eaa2fe69c3bfbece0e1323d1002ecab289dd1d.zip
Rollup merge of #103930 - fee1-dead-contrib:mv-from-root, r=jyn514
Move some tests from `src/test/ui` to more reasonable places
Diffstat (limited to 'src/test/ui/repr/aligned_enum_cast.rs')
-rw-r--r--src/test/ui/repr/aligned_enum_cast.rs25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/test/ui/repr/aligned_enum_cast.rs b/src/test/ui/repr/aligned_enum_cast.rs
new file mode 100644
index 00000000000..1ddf127172e
--- /dev/null
+++ b/src/test/ui/repr/aligned_enum_cast.rs
@@ -0,0 +1,25 @@
+// run-pass
+// allows aligned custom discriminant enums to cast into other types
+// See the issue #92464 for more info
+#[allow(dead_code)]
+#[repr(align(8))]
+enum Aligned {
+    Zero = 0,
+    One = 1,
+}
+
+fn main() {
+    let aligned = Aligned::Zero;
+    let fo = aligned as u8;
+    println!("foo {}", fo);
+    assert_eq!(fo, 0);
+    println!("{}", tou8(Aligned::Zero));
+    assert_eq!(tou8(Aligned::Zero), 0);
+}
+
+#[inline(never)]
+fn tou8(al: Aligned) -> u8 {
+    // Cast behind a function call so ConstProp does not see it
+    // (so that we can test codegen).
+    al as u8
+}