1use proc_macro::TokenStream;
2use quote::ToTokens;
3use syn::{parse_macro_input, parse_quote, ItemFn};
4
5mod mock;
6#[proc_macro_attribute]
19pub fn rule(_attr: TokenStream, item: TokenStream) -> TokenStream {
20 let mut fn_ast = parse_macro_input!(item as ItemFn);
21 fn_ast.attrs.push(parse_quote! { #[no_mangle] });
23 fn_ast
24 .block
25 .stmts
26 .push(parse_quote! { cvlr::cvlr_vacuity_check!(); });
27 fn_ast.into_token_stream().into()
28}
29
30#[proc_macro_attribute]
31pub fn mock_fn(attr: TokenStream, item: TokenStream) -> TokenStream {
32 mock::mock_fn_impl(attr, item)
33}