burn_tensor_testgen/
lib.rs

1use proc_macro::TokenStream;
2use quote::{format_ident, quote};
3
4#[allow(missing_docs)]
5#[proc_macro_attribute]
6pub fn testgen(attr: TokenStream, item: TokenStream) -> TokenStream {
7    let item: proc_macro2::TokenStream = proc_macro2::TokenStream::from(item);
8    let attr: proc_macro2::TokenStream = proc_macro2::TokenStream::from(attr);
9    let macro_ident = format_ident!("testgen_{}", attr.to_string());
10
11    let macro_gen = quote! {
12        #[allow(missing_docs)]
13        #[macro_export]
14        macro_rules! #macro_ident {
15            () => {
16                mod #attr {
17                    use super::*;
18
19                    #item
20                }
21            };
22        }
23    };
24
25    macro_gen.into()
26}