]> git.lizzy.rs Git - rust.git/blob - src/test/run-pass/enum-discrim-manual-sizing.rs
16eaac082abac25da57db21d0b938dda526ae8ff
[rust.git] / src / test / run-pass / enum-discrim-manual-sizing.rs
1 // Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 use std::mem::size_of;
12
13 #[repr(i8)]
14 enum Ei8 {
15     Ai8 = 0,
16     Bi8 = 1
17 }
18
19 #[repr(u8)]
20 enum Eu8 {
21     Au8 = 0,
22     Bu8 = 1
23 }
24
25 #[repr(i16)]
26 enum Ei16 {
27     Ai16 = 0,
28     Bi16 = 1
29 }
30
31 #[repr(u16)]
32 enum Eu16 {
33     Au16 = 0,
34     Bu16 = 1
35 }
36
37 #[repr(i32)]
38 enum Ei32 {
39     Ai32 = 0,
40     Bi32 = 1
41 }
42
43 #[repr(u32)]
44 enum Eu32 {
45     Au32 = 0,
46     Bu32 = 1
47 }
48
49 #[repr(i64)]
50 enum Ei64 {
51     Ai64 = 0,
52     Bi64 = 1
53 }
54
55 #[repr(u64)]
56 enum Eu64 {
57     Au64 = 0,
58     Bu64 = 1
59 }
60
61 #[repr(int)]
62 enum Eint {
63     Aint = 0,
64     Bint = 1
65 }
66
67 #[repr(uint)]
68 enum Euint {
69     Auint = 0,
70     Buint = 1
71 }
72
73 pub fn main() {
74     assert_eq!(size_of::<Ei8>(), 1);
75     assert_eq!(size_of::<Eu8>(), 1);
76     assert_eq!(size_of::<Ei16>(), 2);
77     assert_eq!(size_of::<Eu16>(), 2);
78     assert_eq!(size_of::<Ei32>(), 4);
79     assert_eq!(size_of::<Eu32>(), 4);
80     assert_eq!(size_of::<Ei64>(), 8);
81     assert_eq!(size_of::<Eu64>(), 8);
82     assert_eq!(size_of::<Eint>(), size_of::<int>());
83     assert_eq!(size_of::<Euint>(), size_of::<uint>());
84 }