summaryrefslogtreecommitdiff
path: root/tests/typ/code/call.typ
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typ/code/call.typ')
-rw-r--r--tests/typ/code/call.typ70
1 files changed, 70 insertions, 0 deletions
diff --git a/tests/typ/code/call.typ b/tests/typ/code/call.typ
new file mode 100644
index 00000000..dcf11806
--- /dev/null
+++ b/tests/typ/code/call.typ
@@ -0,0 +1,70 @@
+// Test function calls.
+
+---
+// One argument.
+#args(bold)
+
+// One argument and trailing comma.
+#args(1,)
+
+// One named argument.
+#args(a:2)
+
+// Mixed arguments.
+{args(1, b: "2", 3)}
+
+// Should output `() + 2`.
+#args() + 2
+
+---
+// Ref: false
+
+// Call function assigned to variable.
+#let alias = type
+#test(alias(alias), "function")
+
+// Library function `font` returns template.
+#test(type(font(12pt)), "template")
+
+---
+// Callee expressions.
+{
+ // Error: 5-9 expected function, found boolean
+ true()
+
+ // Wrapped in parens.
+ test((type)("hi"), "string")
+
+ // Call the return value of a function.
+ let adder(dx) = x => x + dx
+ test(adder(2)(5), 7)
+}
+
+#let f(x, body) = (y) => {
+ [{x}] + body + [{y}]
+}
+
+// Call return value of function with body.
+#f(1)[2](3)
+
+// Don't allow this to be a closure.
+// Should output `x => "hi"`.
+#let x = "x"
+#x => "hi"
+
+---
+// Different forms of template arguments.
+
+#let a = "a"
+
+#args[a] \
+#args(a) \
+#args(a, [b]) \
+#args(a)[b]
+
+// Template can be argument or body depending on whitespace.
+#if "template" == type[b] [Sure ]
+#if "template" == type [Nope.] #else [thing.]
+
+// Should output `<function args> (Okay.)`.
+#args (Okay.)