• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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