]> git.proxmox.com Git - rustc.git/blame - src/test/run-pass/structs-enums/enum-discrim-width-stuff.rs
New upstream version 1.37.0+dfsg1
[rustc.git] / src / test / run-pass / structs-enums / enum-discrim-width-stuff.rs
CommitLineData
b7449926
XL
1// run-pass
2#![allow(overflowing_literals)]
3#![allow(dead_code)]
4
1a4d82fc
JJ
5macro_rules! check {
6 ($m:ident, $t:ty, $v:expr) => {{
7 mod $m {
8 use std::mem::size_of;
c34b1796 9 #[derive(Copy, Clone, Debug)]
1a4d82fc
JJ
10 enum E {
11 V = $v,
12 A = 0
13 }
14 static C: E = E::V;
1a4d82fc
JJ
15 pub fn check() {
16 assert_eq!(size_of::<E>(), size_of::<$t>());
17 assert_eq!(E::V as $t, $v as $t);
18 assert_eq!(C as $t, $v as $t);
19 assert_eq!(format!("{:?}", E::V), "V".to_string());
20 assert_eq!(format!("{:?}", C), "V".to_string());
21 }
22 }
23 $m::check();
24 }}
25}
26
27pub fn main() {
28 check!(a, u8, 0x17);
29 check!(b, u8, 0xe8);
30 check!(c, u16, 0x1727);
31 check!(d, u16, 0xe8d8);
32 check!(e, u32, 0x17273747);
33 check!(f, u32, 0xe8d8c8b8);
34
35 check!(z, i8, 0x17);
36 check!(y, i8, -0x17);
37 check!(x, i16, 0x1727);
38 check!(w, i16, -0x1727);
39 check!(v, i32, 0x17273747);
40 check!(u, i32, -0x17273747);
41
42 enum Simple { A, B }
43 assert_eq!(::std::mem::size_of::<Simple>(), 1);
44}