diff options
| author | Laurenz <laurmaedje@gmail.com> | 2025-01-10 17:54:11 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-01-10 16:54:11 +0000 |
| commit | 6b9b78596a6103dfbcadafaeb03eda624da5306a (patch) | |
| tree | 073a9e31f504634290337c20432ea13dc7a8953d /crates/typst-macros/src | |
| parent | 9473aface183feaf48601c5264c3604f5798169e (diff) | |
Don't generate accessors for required fields (#5680)
Diffstat (limited to 'crates/typst-macros/src')
| -rw-r--r-- | crates/typst-macros/src/elem.rs | 11 |
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); |
