summaryrefslogtreecommitdiff
path: root/tests/typ/compiler/while.typ
diff options
context:
space:
mode:
Diffstat (limited to 'tests/typ/compiler/while.typ')
-rw-r--r--tests/typ/compiler/while.typ58
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/typ/compiler/while.typ b/tests/typ/compiler/while.typ
new file mode 100644
index 00000000..5dc5ae41
--- /dev/null
+++ b/tests/typ/compiler/while.typ
@@ -0,0 +1,58 @@
+// Test while expressions.
+
+---
+// Should output `2 4 6 8 10`.
+#let i = 0
+#while i < 10 [
+ { i += 2 }
+ #i
+]
+
+// Should output `Hi`.
+#let iter = true
+#while iter {
+ iter = false
+ "Hi."
+}
+
+#while false {
+ dont-care
+}
+
+---
+// Value of while loops.
+// Ref: false
+
+#test(while false {}, none)
+
+#let i = 0
+#test(type(while i < 1 [{ i += 1 }]), "content")
+
+---
+// Condition must be boolean.
+// Error: 8-14 expected boolean, found content
+#while [nope] [nope]
+
+---
+// Make sure that we terminate and don't complain multiple times.
+#while true {
+ // Error: 3-7 unknown variable
+ nope
+}
+
+---
+// Error: 7 expected expression
+#while
+
+// Error: 7 expected expression
+{while}
+
+// Error: 9 expected body
+#while x
+
+// Error: 7 expected expression
+#while
+x {}
+
+// Error: 9 expected body
+#while x something