From c44ebf876f6ab09fe1629d980efc5c4878a6a5a5 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Mon, 21 Dec 2020 00:47:47 +0100 Subject: [PATCH] =?UTF-8?q?Add=20error=20cases=20for=20[font]=20?= =?UTF-8?q?=F0=9F=A7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/library/style.rs | 6 +++--- tests/typ/func-font-error.typ | 13 ++++++++++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/library/style.rs b/src/library/style.rs index 0cc40f94b..433802490 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); + struct FamilyList(Vec); - 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::() @@ -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 34ff58371..8de754ae5 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