diff options
Diffstat (limited to 'tests/ui/structs-enums/enum-discrim-autosizing.rs')
-rw-r--r-- | tests/ui/structs-enums/enum-discrim-autosizing.rs | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/ui/structs-enums/enum-discrim-autosizing.rs b/tests/ui/structs-enums/enum-discrim-autosizing.rs new file mode 100644 index 000000000..f68fdda60 --- /dev/null +++ b/tests/ui/structs-enums/enum-discrim-autosizing.rs @@ -0,0 +1,53 @@ +// run-pass +#![allow(dead_code)] +#![allow(overflowing_literals)] + +use std::mem::size_of; + +enum Ei8 { + Ai8 = -1, + Bi8 = 0 +} + +enum Eu8 { + Au8 = 0, + Bu8 = 0x80 +} + +enum Ei16 { + Ai16 = -1, + Bi16 = 0x80 +} + +enum Eu16 { + Au16 = 0, + Bu16 = 0x8000 +} + +enum Ei32 { + Ai32 = -1, + Bi32 = 0x8000 +} + +enum Eu32 { + Au32 = 0, + Bu32 = 0x8000_0000 +} + +enum Ei64 { + Ai64 = -1, + Bi64 = 0x8000_0000 +} + +pub fn main() { + assert_eq!(size_of::<Ei8>(), 1); + assert_eq!(size_of::<Eu8>(), 1); + assert_eq!(size_of::<Ei16>(), 2); + assert_eq!(size_of::<Eu16>(), 2); + assert_eq!(size_of::<Ei32>(), 4); + assert_eq!(size_of::<Eu32>(), 4); + #[cfg(target_pointer_width = "64")] + assert_eq!(size_of::<Ei64>(), 8); + #[cfg(target_pointer_width = "32")] + assert_eq!(size_of::<Ei64>(), 4); +} |