lets_expect_macro/
lib.rs

1#![warn(
2    clippy::use_self,
3    clippy::cognitive_complexity,
4    clippy::cloned_instead_of_copied,
5    clippy::derive_partial_eq_without_eq,
6    clippy::equatable_if_let,
7    clippy::explicit_into_iter_loop,
8    clippy::format_push_string,
9    clippy::get_unwrap,
10    clippy::match_same_arms,
11    clippy::needless_for_each,
12    clippy::todo
13)]
14
15extern crate proc_macro;
16
17use lets_expect_core::core::{context::Context, runtime::Runtime};
18use proc_macro::TokenStream;
19use proc_macro2::Span;
20use quote::quote;
21use syn::parse_macro_input;
22
23#[proc_macro]
24pub fn lets_expect(input: TokenStream) -> TokenStream {
25    lets_expect_macro(input)
26}
27
28fn lets_expect_macro(input: TokenStream) -> TokenStream {
29    let main_context = parse_macro_input!(input as Context);
30    let tests = main_context.to_tokens(&Span::call_site(), &Runtime::default());
31
32    quote! {
33        use lets_expect::*;
34
35        #tests
36    }
37    .into()
38}