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}