1 use paste::paste; 2 use paste_test_suite::paste_test; 3 4 #[test] test_attr()5fn test_attr() { 6 paste! { 7 #[paste_test(k = "val" "ue")] 8 struct A; 9 10 #[paste_test_suite::paste_test(k = "val" "ue")] 11 struct B; 12 13 #[::paste_test_suite::paste_test(k = "val" "ue")] 14 struct C; 15 16 #[paste_test(k = "va" [<l u>] e)] 17 struct D; 18 } 19 20 let _ = A; 21 let _ = B; 22 let _ = C; 23 let _ = D; 24 } 25 26 #[test] test_paste_cfg()27fn test_paste_cfg() { 28 macro_rules! m { 29 ($ret:ident, $width:expr) => { 30 paste! { 31 #[cfg(any(feature = "protocol_feature_" $ret:snake, target_pointer_width = "" $width))] 32 fn new() -> $ret { todo!() } 33 } 34 }; 35 } 36 37 struct Paste; 38 39 #[cfg(target_pointer_width = "64")] 40 m!(Paste, 64); 41 #[cfg(target_pointer_width = "32")] 42 m!(Paste, 32); 43 44 let _ = new; 45 } 46 47 #[test] test_path_in_attr()48fn test_path_in_attr() { 49 macro_rules! m { 50 (#[x = $x:ty]) => { 51 stringify!($x) 52 }; 53 } 54 55 let ty = paste! { 56 m!(#[x = foo::Bar]) 57 }; 58 59 assert_eq!("foo::Bar", ty); 60 } 61