cgp_macro_lib/entrypoints/
check_components.rs1use 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}