From 24a0bd8cfb170a002b5266e4dfd3da007b4fc145 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Fri, 27 Oct 2023 15:37:00 +0200 Subject: Fix error priority for function arguments Errors about superfluous arguments are now thrown before errors of the function execution itself. Fixes #1367 --- crates/typst-macros/src/func.rs | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'crates') diff --git a/crates/typst-macros/src/func.rs b/crates/typst-macros/src/func.rs index 5b8501d0..b67fb909 100644 --- a/crates/typst-macros/src/func.rs +++ b/crates/typst-macros/src/func.rs @@ -307,6 +307,9 @@ fn create_wrapper_closure(func: &Func) -> TokenStream { } }; + // Throws errors about unexpected arguments. + let finish = (!func.special.args).then(|| quote! { args.take().finish()?; }); + // This is the actual function call. let call = { let self_ = func @@ -332,6 +335,7 @@ fn create_wrapper_closure(func: &Func) -> TokenStream { |vm, args| { let __typst_func = #parent #ident; #handlers + #finish let output = #call; ::typst::eval::IntoResult::into_result(output, args.span) } -- cgit v1.2.3