summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLeedehai <18319900+Leedehai@users.noreply.github.com>2024-01-09 02:45:24 -0500
committerGitHub <noreply@github.com>2024-01-09 07:45:24 +0000
commit23875a04832a79b6c4fa47d243d9af9650839ff6 (patch)
treedcb08295a1be47f045ad630ba68b3a822393fb19
parent712eaaa5f404aff51163919d43361d9c2bb19873 (diff)
Let type constructor/field access error report the name correctly (#3140)
Co-authored-by: Laurenz <laurmaedje@gmail.com>
-rw-r--r--crates/typst/src/foundations/ty.rs8
-rw-r--r--tests/typ/bugs/3110-no-type-ctor-or-field.typ15
2 files changed, 19 insertions, 4 deletions
diff --git a/crates/typst/src/foundations/ty.rs b/crates/typst/src/foundations/ty.rs
index 4c2098f3..4b9f19a9 100644
--- a/crates/typst/src/foundations/ty.rs
+++ b/crates/typst/src/foundations/ty.rs
@@ -94,10 +94,10 @@ impl Type {
.constructor
.as_ref()
.map(|lazy| Func::from(*lazy))
- .ok_or_else(|| eco_format!("type self does not have a constructor"))
+ .ok_or_else(|| eco_format!("type {self} does not have a constructor"))
}
- /// The type's associated scope of sub-definition.
+ /// The type's associated scope that holds sub-definitions.
pub fn scope(&self) -> &'static Scope {
&(self.0).0.scope
}
@@ -106,13 +106,13 @@ impl Type {
pub fn field(&self, field: &str) -> StrResult<&'static Value> {
self.scope()
.get(field)
- .ok_or_else(|| eco_format!("type self does not contain field `{}`", field))
+ .ok_or_else(|| eco_format!("type {self} does not contain field `{field}`"))
}
}
// Type compatibility.
impl Type {
- /// The type's backwards-compatible name.
+ /// The type's backward-compatible name.
pub fn compat_name(&self) -> &str {
self.long_name()
}
diff --git a/tests/typ/bugs/3110-no-type-ctor-or-field.typ b/tests/typ/bugs/3110-no-type-ctor-or-field.typ
new file mode 100644
index 00000000..61d65253
--- /dev/null
+++ b/tests/typ/bugs/3110-no-type-ctor-or-field.typ
@@ -0,0 +1,15 @@
+// Issue #3110: let the error message report the type name.
+// https://github.com/typst/typst/issues/3110
+// Ref: false
+
+---
+// Error: 2-9 type content does not have a constructor
+#content()
+
+---
+// Error: 6-12 type integer does not contain field `MAXVAL`
+#int.MAXVAL
+
+---
+// Error: 6-18 type string does not contain field `from-unĂ¯code`
+#str.from-unĂ¯code(97)