diff options
| -rw-r--r-- | crates/typst-library/src/foundations/content.rs | 7 | ||||
| -rw-r--r-- | tests/suite/foundations/label.typ | 4 |
2 files changed, 8 insertions, 3 deletions
diff --git a/crates/typst-library/src/foundations/content.rs b/crates/typst-library/src/foundations/content.rs index bfafbc48..ab2f68ac 100644 --- a/crates/typst-library/src/foundations/content.rs +++ b/crates/typst-library/src/foundations/content.rs @@ -211,9 +211,10 @@ impl Content { /// instead. pub fn get_by_name(&self, name: &str) -> Result<Value, FieldAccessError> { if name == "label" { - if let Some(label) = self.label() { - return Ok(label.into_value()); - } + return self + .label() + .map(|label| label.into_value()) + .ok_or(FieldAccessError::Unknown); } let id = self.elem().field_id(name).ok_or(FieldAccessError::Unknown)?; self.get(id, None) diff --git a/tests/suite/foundations/label.typ b/tests/suite/foundations/label.typ index af6d2380..3b84c2d7 100644 --- a/tests/suite/foundations/label.typ +++ b/tests/suite/foundations/label.typ @@ -88,3 +88,7 @@ _Visible_ #set heading(numbering: "1.") // Warning: 1-4 label `<a>` is not attached to anything <a> + +--- label-non-existent-error --- +// Error: 5-10 sequence does not have field "label" +#[].label |
