diff options
| author | Leedehai <18319900+Leedehai@users.noreply.github.com> | 2024-01-09 02:45:24 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-09 07:45:24 +0000 |
| commit | 23875a04832a79b6c4fa47d243d9af9650839ff6 (patch) | |
| tree | dcb08295a1be47f045ad630ba68b3a822393fb19 | |
| parent | 712eaaa5f404aff51163919d43361d9c2bb19873 (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.rs | 8 | ||||
| -rw-r--r-- | tests/typ/bugs/3110-no-type-ctor-or-field.typ | 15 |
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) |
