1#![deny(missing_docs)]
2use proc_macro::TokenStream;
8use quote::quote;
9
10#[proc_macro_attribute]
16pub fn test(_args: TokenStream, item: TokenStream) -> TokenStream {
17 let input = syn::parse_macro_input!(item as syn::ItemFn);
18 let sig = &input.sig;
19 let body = &input.block;
20 let attrs = &input.attrs;
21 let vis = input.vis;
22
23 let result = quote! {
24 #[::core::prelude::v1::test]
25 #(#attrs)*
26 #vis #sig {
27 ::mockalloc::assert_allocs(move || {
28 #body
29 });
30 }
31 };
32
33 result.into()
34}