From: Ian Jackson Date: Mon, 9 Jan 2023 18:57:30 +0000 (+0000) Subject: Config inspection: impl InspectableConfig for InstanceConfig X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ian/git?a=commitdiff_plain;h=2483929e42a89d69033689f82b3126266a3982a5;p=hippotat.git Config inspection: impl InspectableConfig for InstanceConfig Signed-off-by: Ian Jackson --- diff --git a/macros/macros.rs b/macros/macros.rs index 341edb2..4303f00 100644 --- a/macros/macros.rs +++ b/macros/macros.rs @@ -91,6 +91,7 @@ pub fn resolve(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let mut global_fields = vec![]; let mut global_assignments = vec![]; let mut g_inspects = vec![]; + let mut t_inspects = vec![]; for field in &fields.named { //dbg!(field); let fname = &field.ident.as_ref().unwrap(); @@ -112,6 +113,7 @@ pub fn resolve(input: proc_macro::TokenStream) -> proc_macro::TokenStream { let inspect = quote!{ #fname_lit => &self.#fname, }; + t_inspects.push(inspect.clone()); if attr.path == parse_quote!{ per_client } { set_skl(quote_spanned!{fname_span=> SectionKindList::PerClient }); continue; @@ -181,6 +183,7 @@ pub fn resolve(input: proc_macro::TokenStream) -> proc_macro::TokenStream { } }; let g_inspects = mk_inspects(&global, g_inspects); + let t_inspects = mk_inspects(&target, t_inspects); let output = quote! { impl #target { @@ -196,6 +199,8 @@ pub fn resolve(input: proc_macro::TokenStream) -> proc_macro::TokenStream { } } + #t_inspects + #[derive(Debug)] pub struct #global { #( #global_fields ),*