Skip to content

Commit e467930

Browse files
---
yaml --- r: 273380 b: refs/heads/beta c: b5be095 h: refs/heads/master
1 parent 8442992 commit e467930

File tree

2 files changed

+23
-6
lines changed

2 files changed

+23
-6
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ refs/tags/0.9: 36870b185fc5f5486636d4515f0e22677493f225
2323
refs/tags/0.10: ac33f2b15782272ae348dbd7b14b8257b2148b5a
2424
refs/tags/0.11.0: e1247cb1d0d681be034adb4b558b5a0c0d5720f9
2525
refs/tags/0.12.0: f0c419429ef30723ceaf6b42f9b5a2aeb5d2e2d1
26-
refs/heads/beta: ffe5162cd1605228a1dae798953a5ea6b8f2e97f
26+
refs/heads/beta: b5be09564188b39aa2fbc73b057c1e35e99ee99f
2727
refs/tags/1.0.0-alpha: e42bd6d93a1d3433c486200587f8f9e12590a4d7
2828
refs/heads/tmp: e06d2ad9fcd5027bcaac5b08fc9aa39a49d0ecd3
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f

branches/beta/src/test/run-pass/enum-discrim-manual-sizing.rs

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
// except according to those terms.
1010

1111

12-
use std::mem::size_of;
12+
use std::mem::{size_of, align_of};
1313

1414
#[repr(i8)]
1515
enum Ei8 {
@@ -71,14 +71,20 @@ enum Euint {
7171
Buint = 1
7272
}
7373

74+
#[repr(u8)]
75+
enum Eu8NonCLike<T> {
76+
_None,
77+
_Some(T),
78+
}
79+
7480
#[repr(i64)]
75-
enum Ei64_non_c_like<T> {
81+
enum Ei64NonCLike<T> {
7682
_None,
7783
_Some(T),
7884
}
7985

8086
#[repr(u64)]
81-
enum Eu64_non_c_like<T> {
87+
enum Eu64NonCLike<T> {
8288
_None,
8389
_Some(T),
8490
}
@@ -94,6 +100,17 @@ pub fn main() {
94100
assert_eq!(size_of::<Eu64>(), 8);
95101
assert_eq!(size_of::<Eint>(), size_of::<isize>());
96102
assert_eq!(size_of::<Euint>(), size_of::<usize>());
97-
assert_eq!(size_of::<Ei64_non_c_like<()>>(), 8);
98-
assert_eq!(size_of::<Eu64_non_c_like<()>>(), 8);
103+
assert_eq!(size_of::<Eu8NonCLike<()>>(), 1);
104+
assert_eq!(size_of::<Ei64NonCLike<()>>(), 8);
105+
assert_eq!(size_of::<Eu64NonCLike<()>>(), 8);
106+
let u8_expected_size = round_up(9, align_of::<Eu64NonCLike<u8>>());
107+
assert_eq!(size_of::<Eu64NonCLike<u8>>(), u8_expected_size);
108+
let array_expected_size = round_up(28, align_of::<Eu64NonCLike<[u32; 5]>>());
109+
assert_eq!(size_of::<Eu64NonCLike<[u32; 5]>>(), array_expected_size);
110+
assert_eq!(size_of::<Eu64NonCLike<[u32; 6]>>(), 32);
111+
}
112+
113+
// Rounds x up to the next multiple of a
114+
fn round_up(x: usize, a: usize) -> usize {
115+
((x + (a - 1)) / a) * a
99116
}

0 commit comments

Comments
 (0)