summaryrefslogtreecommitdiff
path: root/crates/typst-macros/src
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2025-01-10 17:54:11 +0100
committerGitHub <noreply@github.com>2025-01-10 16:54:11 +0000
commit6b9b78596a6103dfbcadafaeb03eda624da5306a (patch)
tree073a9e31f504634290337c20432ea13dc7a8953d /crates/typst-macros/src
parent9473aface183feaf48601c5264c3604f5798169e (diff)
Don't generate accessors for required fields (#5680)
Diffstat (limited to 'crates/typst-macros/src')
-rw-r--r--crates/typst-macros/src/elem.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/crates/typst-macros/src/elem.rs b/crates/typst-macros/src/elem.rs
index 78a3c180..67fe7ed6 100644
--- a/crates/typst-macros/src/elem.rs
+++ b/crates/typst-macros/src/elem.rs
@@ -63,6 +63,11 @@ impl Elem {
self.real_fields().filter(|field| !field.ghost)
}
+ /// Fields that get accessor, with, and push methods.
+ fn accessor_fields(&self) -> impl Iterator<Item = &Field> + Clone {
+ self.struct_fields().filter(|field| !field.required)
+ }
+
/// Fields that are relevant for equality.
///
/// Synthesized fields are excluded to ensure equality before and after
@@ -442,9 +447,9 @@ fn create_inherent_impl(element: &Elem) -> TokenStream {
let Elem { ident, .. } = element;
let new_func = create_new_func(element);
- let with_field_methods = element.struct_fields().map(create_with_field_method);
- let push_field_methods = element.struct_fields().map(create_push_field_method);
- let field_methods = element.struct_fields().map(create_field_method);
+ let with_field_methods = element.accessor_fields().map(create_with_field_method);
+ let push_field_methods = element.accessor_fields().map(create_push_field_method);
+ let field_methods = element.accessor_fields().map(create_field_method);
let field_in_methods = element.style_fields().map(create_field_in_method);
let set_field_methods = element.style_fields().map(create_set_field_method);