diff options
Diffstat (limited to 'src/test/ui/repr/aligned_enum_cast.rs')
-rw-r--r-- | src/test/ui/repr/aligned_enum_cast.rs | 25 |
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 000000000..1ddf12717 --- /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 +} |