Skip to main content

cgp_macro_lib/entrypoints/
check_components.rs

1use proc_macro2::TokenStream;
2use quote::{ToTokens, TokenStreamExt};
3use syn::parse2;
4
5use crate::check_components::derive_check_components;
6use crate::parse::CheckComponentsSpecs;
7
8pub fn check_components(body: TokenStream) -> syn::Result<TokenStream> {
9    let spec: CheckComponentsSpecs = parse2(body)?;
10
11    let mut out = TokenStream::new();
12
13    for spec in spec.specs {
14        let (item_trait, item_impls) = derive_check_components(&spec)?;
15
16        out.append_all(item_trait.to_token_stream());
17        out.append_all(item_impls);
18    }
19
20    Ok(out)
21}