1extern crate proc_macro;
2use proc_macro::TokenStream;
3use quote::quote;
4
5#[proc_macro_attribute]
6pub fn test_item(_attr: TokenStream, item: TokenStream) -> TokenStream {
7 let input = syn::parse_macro_input!(item as syn::ItemFn);
8 let name = &input.sig.ident.to_string();
9 let func = &input.block;
10
11 let r = quote! {
12 #[test_case]
13 const t: TestType = TestType {
14 modname: module_path!(),
15 name: #name,
16 f: || -> Result<(),()> {
17 #func
18 Ok(())
19 }
20 };
21 };
22 r.into()
23}