diff options
| author | Devon Hollowood <devonhollowood@gmail.com> | 2016-03-07 12:26:00 -0800 |
|---|---|---|
| committer | Devon Hollowood <devonhollowood@gmail.com> | 2016-03-07 12:26:00 -0800 |
| commit | b5be09564188b39aa2fbc73b057c1e35e99ee99f (patch) | |
| tree | 5ff26f26300841497cbfae158fb657f39b2da054 | |
| parent | ffe5162cd1605228a1dae798953a5ea6b8f2e97f (diff) | |
| download | rust-b5be09564188b39aa2fbc73b057c1e35e99ee99f.tar.gz rust-b5be09564188b39aa2fbc73b057c1e35e99ee99f.zip | |
Improve tests for #26114
| -rw-r--r-- | src/test/run-pass/enum-discrim-manual-sizing.rs | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/test/run-pass/enum-discrim-manual-sizing.rs b/src/test/run-pass/enum-discrim-manual-sizing.rs index 377f52a62c5..3bbc107e0b9 100644 --- a/src/test/run-pass/enum-discrim-manual-sizing.rs +++ b/src/test/run-pass/enum-discrim-manual-sizing.rs @@ -9,7 +9,7 @@ // except according to those terms. -use std::mem::size_of; +use std::mem::{size_of, align_of}; #[repr(i8)] enum Ei8 { @@ -71,14 +71,20 @@ enum Euint { Buint = 1 } +#[repr(u8)] +enum Eu8NonCLike<T> { + _None, + _Some(T), +} + #[repr(i64)] -enum Ei64_non_c_like<T> { +enum Ei64NonCLike<T> { _None, _Some(T), } #[repr(u64)] -enum Eu64_non_c_like<T> { +enum Eu64NonCLike<T> { _None, _Some(T), } @@ -94,6 +100,17 @@ pub fn main() { assert_eq!(size_of::<Eu64>(), 8); assert_eq!(size_of::<Eint>(), size_of::<isize>()); assert_eq!(size_of::<Euint>(), size_of::<usize>()); - assert_eq!(size_of::<Ei64_non_c_like<()>>(), 8); - assert_eq!(size_of::<Eu64_non_c_like<()>>(), 8); + assert_eq!(size_of::<Eu8NonCLike<()>>(), 1); + assert_eq!(size_of::<Ei64NonCLike<()>>(), 8); + assert_eq!(size_of::<Eu64NonCLike<()>>(), 8); + let u8_expected_size = round_up(9, align_of::<Eu64NonCLike<u8>>()); + assert_eq!(size_of::<Eu64NonCLike<u8>>(), u8_expected_size); + let array_expected_size = round_up(28, align_of::<Eu64NonCLike<[u32; 5]>>()); + assert_eq!(size_of::<Eu64NonCLike<[u32; 5]>>(), array_expected_size); + assert_eq!(size_of::<Eu64NonCLike<[u32; 6]>>(), 32); +} + +// Rounds x up to the next multiple of a +fn round_up(x: usize, a: usize) -> usize { + ((x + (a - 1)) / a) * a } |
