summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/typst-macros/src/func.rs4
-rw-r--r--tests/typ/compiler/array.typ4
2 files changed, 8 insertions, 0 deletions
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)
}
diff --git a/tests/typ/compiler/array.typ b/tests/typ/compiler/array.typ
index 2ce47158..67b8abc3 100644
--- a/tests/typ/compiler/array.typ
+++ b/tests/typ/compiler/array.typ
@@ -314,6 +314,10 @@
#(1pt, 2pt, 3em).sorted()
---
+// Error: 42-52 unexpected argument
+#((k: "a", v: 2), (k: "b", v: 1)).sorted(it => it.v)
+
+---
// Error: 2-18 array index out of bounds (index: -4, len: 3) and no default value was specified
#(1, 2, 3).at(-4)