summaryrefslogtreecommitdiff
path: root/tests/typ/code/let.typ
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-05-18 00:36:11 +0200
committerLaurenz <laurmaedje@gmail.com>2021-05-18 00:36:11 +0200
commit8b58171d7ca036d71b32749286c251cc91bdd10e (patch)
tree4594ab5088edf8eec44f3bafe3fb8fecb13ac61b /tests/typ/code/let.typ
parent8d67c0ca5eb3486dde97fd281bd4a51d535c600c (diff)
Reorganize test cases
Diffstat (limited to 'tests/typ/code/let.typ')
-rw-r--r--tests/typ/code/let.typ63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/typ/code/let.typ b/tests/typ/code/let.typ
new file mode 100644
index 00000000..4f84aa67
--- /dev/null
+++ b/tests/typ/code/let.typ
@@ -0,0 +1,63 @@
+// Test let bindings.
+
+---
+// Ref: false
+
+// Automatically initialized with none.
+#let x
+#test(x, none)
+
+// Error: 9 expected expression
+#let y =
+#test(y, none)
+
+// Manually initialized with one.
+#let z = 1
+#test(z, 1)
+
+---
+// Syntax sugar for function definitions.
+#let background = #9feb52
+#let rect(body) = rect(width: 2cm, fill: background, pad(5pt, body))
+#rect[Hi!]
+
+// Error: 13 expected body
+#let func(x)
+
+// Error: 2-6 unknown variable
+{func}
+
+// Error: 15 expected expression
+#let func(x) =
+
+// Error: 2-6 unknown variable
+{func}
+
+---
+// Termination.
+
+// Terminated by line break.
+#let v1 = 1
+One
+
+// Terminated by semicolon.
+#let v2 = 2; Two
+
+// Terminated by semicolon and line break.
+#let v3 = 3;
+Three
+
+// Terminated because expression ends.
+// Error: 12 expected semicolon or line break
+#let v4 = 4 Four
+
+// Terminated by semicolon even though we are in a paren group.
+// Error: 2:19 expected expression
+// Error: 1:19 expected closing paren
+#let v5 = (1, 2 + ; Five
+
+#test(v1, 1)
+#test(v2, 2)
+#test(v3, 3)
+#test(v4, 4)
+#test(v5, (1, 2))