]>
Commit | Line | Data |
---|---|---|
0bf4aa26 | 1 | #![allow(dead_code)] |
c34b1796 | 2 | |
1a4d82fc | 3 | use std::mem; |
970d7e83 | 4 | |
c34b1796 AL |
5 | enum E<T> { Thing(isize, T), Nothing((), ((), ()), [i8; 0]) } |
6 | struct S<T>(isize, T); | |
970d7e83 LB |
7 | |
8 | // These are macros so we get useful assert messages. | |
9 | ||
10 | macro_rules! check_option { | |
11 | ($T:ty) => { | |
1a4d82fc | 12 | assert_eq!(mem::size_of::<Option<$T>>(), mem::size_of::<$T>()); |
970d7e83 LB |
13 | } |
14 | } | |
15 | ||
16 | macro_rules! check_fancy { | |
17 | ($T:ty) => { | |
1a4d82fc | 18 | assert_eq!(mem::size_of::<E<$T>>(), mem::size_of::<S<$T>>()); |
970d7e83 LB |
19 | } |
20 | } | |
21 | ||
22 | macro_rules! check_type { | |
23 | ($T:ty) => {{ | |
24 | check_option!($T); | |
25 | check_fancy!($T); | |
26 | }} | |
27 | } | |
28 | ||
29 | pub fn main() { | |
c34b1796 AL |
30 | check_type!(&'static isize); |
31 | check_type!(Box<isize>); | |
970d7e83 LB |
32 | check_type!(extern fn()); |
33 | } |