25 lines
409 B
Rust
25 lines
409 B
Rust
//#![feature(trace_macros)]
|
|
|
|
use proc_macro::TokenStream;
|
|
use quote::quote;
|
|
use syn::{parse_macro_input, ItemFn};
|
|
|
|
//trace_macros!(true);
|
|
|
|
#[proc_macro_attribute]
|
|
pub fn export_fn(_args: TokenStream, input: TokenStream) -> TokenStream {
|
|
let ItemFn {
|
|
attrs,
|
|
vis,
|
|
sig,
|
|
block,
|
|
} = parse_macro_input!(input);
|
|
let stmts = &block.stmts;
|
|
quote! {
|
|
#(#attrs)* #vis #sig {
|
|
#(#stmts)*
|
|
}
|
|
}
|
|
.into()
|
|
}
|