assert_parse_register_assert_macro/
lib.rs1extern crate proc_macro;
2
3mod parse;
4
5use parse::Args;
6use proc_macro::TokenStream;
7use quote::quote;
8
9#[proc_macro]
10pub fn register_assert(args: TokenStream) -> TokenStream {
12 let args: Args = match syn::parse(args) {
13 Ok(a) => a,
14 Err(e) => {
15 return e.to_compile_error().into();
16 }
17 };
18 let parsable = args.get_parsable();
19 let error = args.get_error();
20 let generics = match args.get_generics() {
21 Some(i) => quote! {#i},
22 None => quote! {},
23 };
24 quote! {
25 type Assert = assert_parse::Assert<#parsable #generics, #error>;
26
27 #[rstest::fixture]
28 fn assert() -> Assert {
29 assert_parse::make_assert()
30 }
31 }
32 .into()
33}