summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2020-12-21 00:47:47 +0100
committerLaurenz <laurmaedje@gmail.com>2020-12-21 00:47:47 +0100
commitc44ebf876f6ab09fe1629d980efc5c4878a6a5a5 (patch)
treec01024faa176a60cada492c6e2277dc2235e4bea
parente59de77f96d43fa675c5c733ccf39ec2c22e949e (diff)
Add error cases for [font] 🧯
-rw-r--r--src/library/style.rs6
-rw-r--r--tests/typ/func-font-error.typ13
2 files changed, 15 insertions, 4 deletions
diff --git a/src/library/style.rs b/src/library/style.rs
index 0cc40f94..43380249 100644
--- a/src/library/style.rs
+++ b/src/library/style.rs
@@ -105,9 +105,9 @@ pub fn font(mut args: Args, ctx: &mut EvalContext) -> Value {
ctx.state.font.variant.stretch = stretch;
}
- struct FontList(Vec<String>);
+ struct FamilyList(Vec<String>);
- try_from_match!(FontList["font or list of fonts"] @ span:
+ try_from_match!(FamilyList["family or list of families"] @ span:
Value::Str(v) => Self(vec![v.to_lowercase()]),
Value::Dict(v) => Self(Args(v.span_with(span))
.find_all::<StringLike>()
@@ -117,7 +117,7 @@ pub fn font(mut args: Args, ctx: &mut EvalContext) -> Value {
);
for &class in &["serif", "sans-serif", "monospace", "emoji", "math"] {
- if let Some(list) = args.get::<_, FontList>(ctx, class) {
+ if let Some(list) = args.get::<_, FamilyList>(ctx, class) {
Rc::make_mut(&mut ctx.state.font.families)
.update_class_list(class.to_string(), list.0);
needs_flattening = true;
diff --git a/tests/typ/func-font-error.typ b/tests/typ/func-font-error.typ
index 34ff5837..8de754ae 100644
--- a/tests/typ/func-font-error.typ
+++ b/tests/typ/func-font-error.typ
@@ -1,6 +1,17 @@
// Test error cases of the `font` function.
+// Not one of the valid things for positional arguments.
+[font: false]
+
+// Wrong types.
+[font: style=bold, weight="thin", emoji=0]
+
+// Non-existing argument.
[font: something="invalid"]
// compare-ref: false
-// error: 3:8-3:27 unexpected argument
+// error: 4:8-4:13 unexpected argument
+// error: 7:14-7:18 invalid font style
+// error: 7:27-7:33 expected font weight, found string
+// error: 7:41-7:42 expected family or list of families, found integer
+// error: 10:8-10:27 unexpected argument