1 #![allow(unused_attributes)]
2
3 extern crate proc_macro;
4
5 use std::mem;
6
7 #[rustversion::attr(before(1.64), ignore = "requires Rust 1.64+")]
8 #[cfg_attr(not(target_pointer_width = "64"), ignore = "only applicable to 64-bit")]
9 #[cfg_attr(randomize_layout, ignore = "disabled due to randomized layout")]
10 #[test]
test_proc_macro_size()11 fn test_proc_macro_size() {
12 assert_eq!(mem::size_of::<proc_macro::Span>(), 4);
13 assert_eq!(mem::size_of::<Option<proc_macro::Span>>(), 4);
14 assert_eq!(mem::size_of::<proc_macro::Group>(), 20);
15 assert_eq!(mem::size_of::<proc_macro::Ident>(), 12);
16 assert_eq!(mem::size_of::<proc_macro::Punct>(), 8);
17 assert_eq!(mem::size_of::<proc_macro::Literal>(), 16);
18 assert_eq!(mem::size_of::<proc_macro::TokenStream>(), 4);
19 }
20
21 #[cfg_attr(not(target_pointer_width = "64"), ignore = "only applicable to 64-bit")]
22 #[cfg_attr(randomize_layout, ignore = "disabled due to randomized layout")]
23 #[cfg_attr(wrap_proc_macro, ignore = "wrapper mode")]
24 #[cfg_attr(span_locations, ignore = "span locations are on")]
25 #[test]
test_proc_macro2_fallback_size_without_locations()26 fn test_proc_macro2_fallback_size_without_locations() {
27 assert_eq!(mem::size_of::<proc_macro2::Span>(), 0);
28 assert_eq!(mem::size_of::<Option<proc_macro2::Span>>(), 1);
29 assert_eq!(mem::size_of::<proc_macro2::Group>(), 16);
30 assert_eq!(mem::size_of::<proc_macro2::Ident>(), 24);
31 assert_eq!(mem::size_of::<proc_macro2::Punct>(), 8);
32 assert_eq!(mem::size_of::<proc_macro2::Literal>(), 24);
33 assert_eq!(mem::size_of::<proc_macro2::TokenStream>(), 8);
34 }
35
36 #[cfg_attr(not(target_pointer_width = "64"), ignore = "only applicable to 64-bit")]
37 #[cfg_attr(randomize_layout, ignore = "disabled due to randomized layout")]
38 #[cfg_attr(wrap_proc_macro, ignore = "wrapper mode")]
39 #[cfg_attr(not(span_locations), ignore = "span locations are off")]
40 #[test]
test_proc_macro2_fallback_size_with_locations()41 fn test_proc_macro2_fallback_size_with_locations() {
42 assert_eq!(mem::size_of::<proc_macro2::Span>(), 8);
43 assert_eq!(mem::size_of::<Option<proc_macro2::Span>>(), 12);
44 assert_eq!(mem::size_of::<proc_macro2::Group>(), 24);
45 assert_eq!(mem::size_of::<proc_macro2::Ident>(), 32);
46 assert_eq!(mem::size_of::<proc_macro2::Punct>(), 16);
47 assert_eq!(mem::size_of::<proc_macro2::Literal>(), 32);
48 assert_eq!(mem::size_of::<proc_macro2::TokenStream>(), 8);
49 }
50
51 #[rustversion::attr(before(1.71), ignore = "requires Rust 1.71+")]
52 #[cfg_attr(not(target_pointer_width = "64"), ignore = "only applicable to 64-bit")]
53 #[cfg_attr(randomize_layout, ignore = "disabled due to randomized layout")]
54 #[cfg_attr(not(wrap_proc_macro), ignore = "fallback mode")]
55 #[cfg_attr(span_locations, ignore = "span locations are on")]
56 #[test]
test_proc_macro2_wrapper_size_without_locations()57 fn test_proc_macro2_wrapper_size_without_locations() {
58 assert_eq!(mem::size_of::<proc_macro2::Span>(), 4);
59 assert_eq!(mem::size_of::<Option<proc_macro2::Span>>(), 8);
60 assert_eq!(mem::size_of::<proc_macro2::Group>(), 24);
61 assert_eq!(mem::size_of::<proc_macro2::Ident>(), 24);
62 assert_eq!(mem::size_of::<proc_macro2::Punct>(), 12);
63 assert_eq!(mem::size_of::<proc_macro2::Literal>(), 24);
64 assert_eq!(mem::size_of::<proc_macro2::TokenStream>(), 32);
65 }
66
67 #[rustversion::attr(before(1.65), ignore = "requires Rust 1.65+")]
68 #[cfg_attr(not(target_pointer_width = "64"), ignore = "only applicable to 64-bit")]
69 #[cfg_attr(randomize_layout, ignore = "disabled due to randomized layout")]
70 #[cfg_attr(not(wrap_proc_macro), ignore = "fallback mode")]
71 #[cfg_attr(not(span_locations), ignore = "span locations are off")]
72 #[test]
test_proc_macro2_wrapper_size_with_locations()73 fn test_proc_macro2_wrapper_size_with_locations() {
74 assert_eq!(mem::size_of::<proc_macro2::Span>(), 12);
75 assert_eq!(mem::size_of::<Option<proc_macro2::Span>>(), 12);
76 assert_eq!(mem::size_of::<proc_macro2::Group>(), 32);
77 assert_eq!(mem::size_of::<proc_macro2::Ident>(), 32);
78 assert_eq!(mem::size_of::<proc_macro2::Punct>(), 20);
79 assert_eq!(mem::size_of::<proc_macro2::Literal>(), 32);
80 assert_eq!(mem::size_of::<proc_macro2::TokenStream>(), 32);
81 }
82