From a236e362db8be16d64da26eba73c46d8cc8bb04e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20d=27Herbais=20de=20Thun?= Date: Tue, 2 Jan 2024 10:06:56 +0100 Subject: [PATCH] Fix `#[internal]` fields needing `IntoValue` impl (#3103) --- crates/typst-macros/src/elem.rs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/crates/typst-macros/src/elem.rs b/crates/typst-macros/src/elem.rs index 34c547375..2199ec92c 100644 --- a/crates/typst-macros/src/elem.rs +++ b/crates/typst-macros/src/elem.rs @@ -834,17 +834,21 @@ fn create_native_elem_impl(element: &Elem) -> TokenStream { }); // Creation of the fields dictionary for inherent fields. - let field_dict = element.inherent_fields().clone().map(|field| { - let name = &field.name; - let field_ident = &field.ident; - let field_call = quote! { ::ecow::EcoString::from(#name).into() }; - quote! { - fields.insert( - #field_call, - #foundations::IntoValue::into_value(self.#field_ident.clone()) - ); - } - }); + let field_dict = element + .inherent_fields() + .filter(|field| !field.internal) + .clone() + .map(|field| { + let name = &field.name; + let field_ident = &field.ident; + let field_call = quote! { ::ecow::EcoString::from(#name).into() }; + quote! { + fields.insert( + #field_call, + #foundations::IntoValue::into_value(self.#field_ident.clone()) + ); + } + }); // Creation of the fields dictionary for optional fields. let field_opt_dict = element