summaryrefslogtreecommitdiff
path: root/tests/lang/typ
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2021-02-20 17:53:40 +0100
committerLaurenz <laurmaedje@gmail.com>2021-02-20 23:34:33 +0100
commit05727bfc3a9cfd45a8e2028dfd0806f7a8f88015 (patch)
tree6c0b66eb2a9dff224cb39eb6ccb478656a706c04 /tests/lang/typ
parent927341d93ae29678095e3b874bd68bfc57d4bc05 (diff)
Reorganize tests 🔀
Diffstat (limited to 'tests/lang/typ')
-rw-r--r--tests/lang/typ/array.typ43
-rw-r--r--tests/lang/typ/block-invalid.typ37
-rw-r--r--tests/lang/typ/block-scoping.typ35
-rw-r--r--tests/lang/typ/block.typ38
-rw-r--r--tests/lang/typ/call-invalid.typ44
-rw-r--r--tests/lang/typ/call.typ40
-rw-r--r--tests/lang/typ/comment.typ23
-rw-r--r--tests/lang/typ/dict.typ20
-rw-r--r--tests/lang/typ/emph.typ14
-rw-r--r--tests/lang/typ/empty.typ0
-rw-r--r--tests/lang/typ/escape.typ30
-rw-r--r--tests/lang/typ/expr-assoc.typ18
-rw-r--r--tests/lang/typ/expr-binary.typ131
-rw-r--r--tests/lang/typ/expr-invalid.typ59
-rw-r--r--tests/lang/typ/expr-prec.typ30
-rw-r--r--tests/lang/typ/expr-unary.typ23
-rw-r--r--tests/lang/typ/for-invalid.typ32
-rw-r--r--tests/lang/typ/for-pattern.typ30
-rw-r--r--tests/lang/typ/for-value.typ20
-rw-r--r--tests/lang/typ/for.typ52
-rw-r--r--tests/lang/typ/heading.typ44
-rw-r--r--tests/lang/typ/if-invalid.typ28
-rw-r--r--tests/lang/typ/if-value.typ21
-rw-r--r--tests/lang/typ/if.typ45
-rw-r--r--tests/lang/typ/let-invalid.typ20
-rw-r--r--tests/lang/typ/let-terminated.typ28
-rw-r--r--tests/lang/typ/let.typ11
-rw-r--r--tests/lang/typ/linebreak.typ23
-rw-r--r--tests/lang/typ/nbsp.typ5
-rw-r--r--tests/lang/typ/raw.typ51
-rw-r--r--tests/lang/typ/repr.typ50
-rw-r--r--tests/lang/typ/spacing.typ27
-rw-r--r--tests/lang/typ/strong.typ14
-rw-r--r--tests/lang/typ/text.typ8
34 files changed, 0 insertions, 1094 deletions
diff --git a/tests/lang/typ/array.typ b/tests/lang/typ/array.typ
deleted file mode 100644
index c9383501..00000000
--- a/tests/lang/typ/array.typ
+++ /dev/null
@@ -1,43 +0,0 @@
-// Test arrays.
-
----
-// Empty.
-{()}
-
-// Not an array, just a parenthesized expression.
-{(1)}
-
-// One item and trailing comma.
-{(-1,)}
-
-// No trailing comma.
-{(true, false)}
-
-// Multiple lines and items and trailing comma.
-{("1"
- , #002
- ,)}
-
-// Error: 3 expected closing paren
-{(}
-
-// Error: 2-3 expected expression, found closing paren
-{)}
-
-// Error: 2:4 expected comma
-// Error: 1:4-1:6 expected expression, found end of block comment
-{(1*/2)}
-
-// Error: 6-8 expected expression, found invalid token
-{(1, 1u 2)}
-
-// Error: 3-4 expected expression, found comma
-{(,1)}
-
-// Missing expression makes named pair incomplete, making this an empty array.
-// Error: 5 expected expression
-{(a:)}
-
-// Named pair after this is already identified as an array.
-// Error: 6-10 expected expression, found named pair
-{(1, b: 2)}
diff --git a/tests/lang/typ/block-invalid.typ b/tests/lang/typ/block-invalid.typ
deleted file mode 100644
index d98bf06b..00000000
--- a/tests/lang/typ/block-invalid.typ
+++ /dev/null
@@ -1,37 +0,0 @@
-// Test invalid code block syntax.
-
----
-// Multiple unseparated expressions in one line.
-
-// Error: 2-4 expected expression, found invalid token
-{1u}
-
-// Should output `1`.
-// Error: 3 expected semicolon or line break
-{0 1}
-
-// Should output `2`.
-// Error: 2:12 expected semicolon or line break
-// Error: 1:22 expected semicolon or line break
-{let x = -1 let y = 3 x + y}
-
-// Should output `3`.
-{
- // Error: 9-12 expected identifier, found string
- for "v"
-
- // Error: 10 expected keyword `in`
- for v let z = 1 + 2
-
- z
-}
-
----
-// Ref: false
-// Error: 3:1 expected closing brace
-{
-
----
-// Ref: false
-// Error: 1-2 unexpected closing brace
-}
diff --git a/tests/lang/typ/block-scoping.typ b/tests/lang/typ/block-scoping.typ
deleted file mode 100644
index 7bb98969..00000000
--- a/tests/lang/typ/block-scoping.typ
+++ /dev/null
@@ -1,35 +0,0 @@
-// Test scoping with blocks.
-// Ref: false
-
----
-// Block in template does not create a scope.
-{ let x = 1 }
-#test(x, 1)
-
----
-// Block in expression does create a scope.
-#let a = {
- let b = 1
- b
-}
-
-#test(a, 1)
-
-// Error: 2-3 unknown variable
-{b}
-
----
-// Multiple nested scopes.
-{
- let a = "a1"
- {
- let a = "a2"
- {
- test(a, "a2")
- let a = "a3"
- test(a, "a3")
- }
- test(a, "a2")
- }
- test(a, "a1")
-}
diff --git a/tests/lang/typ/block.typ b/tests/lang/typ/block.typ
deleted file mode 100644
index 196e6c14..00000000
--- a/tests/lang/typ/block.typ
+++ /dev/null
@@ -1,38 +0,0 @@
-// Test code blocks.
-
----
-All none
-
-// Nothing evaluates to none.
-{}
-
-// Let evaluates to none.
-{ let v = 0 }
-
-// Trailing none evaluates to none.
-{
- type("")
- none
-}
-
----
-// Evaluates to single expression.
-{ "Hello" }
-
-// Evaluates to trailing expression.
-{ let x = "Hel"; x + "lo" }
-
-// Evaluates to concatenation of for loop bodies.
-{
- let parts = ("Hel", "lo")
- for s in parts [{s}]
-}
-
----
-// Works the same way in code environment.
-// Ref: false
-#test(3, {
- let x = 1
- let y = 2
- x + y
-})
diff --git a/tests/lang/typ/call-invalid.typ b/tests/lang/typ/call-invalid.typ
deleted file mode 100644
index 0ed5246f..00000000
--- a/tests/lang/typ/call-invalid.typ
+++ /dev/null
@@ -1,44 +0,0 @@
-// Test invalid function calls.
-
----
-// Error: 1-2 unexpected invalid token
-#
-
----
-// Error: 7-8 expected expression, found colon
-#args(:)
-
-// Error: 10-12 expected expression, found end of block comment
-#args(a:1*/)
-
-// Error: 8 expected comma
-#args(1 2)
-
-// Error: 2:7-2:8 expected identifier
-// Error: 1:9 expected expression
-#args(1:)
-
-// Error: 7-8 expected identifier
-#args(1:2)
-
-// Error: 7-10 expected identifier
-{args((x):1)}
-
----
-#let x = "string"
-
-// Error: 1-3 expected function, found string
-#x()
-
----
-// Error: 3:1 expected closing bracket
-#args[`a]`
-
----
-// Error: 7 expected closing paren
-{args(}
-
----
-// Error: 3:1 expected quote
-// Error: 2:1 expected closing paren
-#args("]
diff --git a/tests/lang/typ/call.typ b/tests/lang/typ/call.typ
deleted file mode 100644
index 213d5554..00000000
--- a/tests/lang/typ/call.typ
+++ /dev/null
@@ -1,40 +0,0 @@
-// 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)}
-
----
-// Different forms of template arguments.
-// Ref: true
-
-#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.)
-
----
-// Call function assigned to variable.
-#let alias = type
-#test(alias(alias), "function")
-
-// Library function `font` returns template.
-#test(type(font(12pt)), "template")
diff --git a/tests/lang/typ/comment.typ b/tests/lang/typ/comment.typ
deleted file mode 100644
index 25180211..00000000
--- a/tests/lang/typ/comment.typ
+++ /dev/null
@@ -1,23 +0,0 @@
-// Test line and block comments.
-
----
-// Line comment acts as spacing.
-A// you
-B
-
-// Block comment does not act as spacing.
-C/*
- /* */
-*/D
-
-// Works in code.
-#test(type(/*1*/ 1) //
-, "integer")
-
----
-// End should not appear without start.
-// Error: 1:7-1:9 unexpected end of block comment
-/* */ */
-
-// Unterminated is okay.
-/*
diff --git a/tests/lang/typ/dict.typ b/tests/lang/typ/dict.typ
deleted file mode 100644
index 655a3299..00000000
--- a/tests/lang/typ/dict.typ
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test dictionaries.
-
----
-// Empty
-{(:)}
-
-// Two pairs.
-{(a1: 1, a2: 2)}
-
----
-// Simple expression after already being identified as a dictionary.
-// Error: 9-10 expected named pair, found expression
-{(a: 1, b)}
-
-// Identified as dictionary due to initial colon.
-// Error: 4:4-4:5 expected named pair, found expression
-// Error: 3:5 expected comma
-// Error: 2:12-2:16 expected identifier
-// Error: 1:17-1:18 expected expression, found colon
-{(:1 b:[], true::)}
diff --git a/tests/lang/typ/emph.typ b/tests/lang/typ/emph.typ
deleted file mode 100644
index 772e15ab..00000000
--- a/tests/lang/typ/emph.typ
+++ /dev/null
@@ -1,14 +0,0 @@
-// Test emphasis toggle.
-
----
-// Basic.
-_Emphasized!_
-
-// Inside of words.
-Partly em_phas_ized.
-
-// Scoped to body.
-#box[_Scoped] to body.
-
-// Unterminated is fine.
-_The End
diff --git a/tests/lang/typ/empty.typ b/tests/lang/typ/empty.typ
deleted file mode 100644
index e69de29b..00000000
--- a/tests/lang/typ/empty.typ
+++ /dev/null
diff --git a/tests/lang/typ/escape.typ b/tests/lang/typ/escape.typ
deleted file mode 100644
index eeac4997..00000000
--- a/tests/lang/typ/escape.typ
+++ /dev/null
@@ -1,30 +0,0 @@
-// Test escape sequences.
-
----
-// Escapable symbols.
-\\ \/ \[ \] \{ \} \# \* \_ \= \~ \` \$
-
-// No need to escape.
-( ) ; < >
-
-// Unescapable.
-\a \: \; \( \)
-
-// Escaped comments.
-\//
-\/\* \*\/
-\/* \*/ *
-
-// Unicode escape sequence.
-\u{1F3D5} == 🏕
-
-// Escaped escape sequence.
-\u{41} vs. \\u\{41\}
-
-// Unicode codepoint does not exist.
-// Error: 1-11 invalid unicode escape sequence
-\u{FFFFFF}
-
-// Unterminated.
-// Error: 6 expected closing brace
-\u{41*Bold*
diff --git a/tests/lang/typ/expr-assoc.typ b/tests/lang/typ/expr-assoc.typ
deleted file mode 100644
index 19c56951..00000000
--- a/tests/lang/typ/expr-assoc.typ
+++ /dev/null
@@ -1,18 +0,0 @@
-// Test operator associativity.
-// Ref: false
-
----
-// Math operators are left-associative.
-#test(10 / 2 / 2 == (10 / 2) / 2, true)
-#test(10 / 2 / 2 == 10 / (2 / 2), false)
-#test(1 / 2 * 3, 1.5)
-
----
-// Assignment is right-associative.
-{
- let x = 1
- let y = 2
- x = y = "ok"
- test(x, none)
- test(y, "ok")
-}
diff --git a/tests/lang/typ/expr-binary.typ b/tests/lang/typ/expr-binary.typ
deleted file mode 100644
index 9fbffe18..00000000
--- a/tests/lang/typ/expr-binary.typ
+++ /dev/null
@@ -1,131 +0,0 @@
-// Test binary expressions.
-// Ref: false
-
----
-// Test template addition.
-// Ref: true
-{[*Hello ] + [world!*]}
-
----
-// Test math operators.
-
-// Addition.
-#test(2 + 4, 6)
-#test("a" + "b", "ab")
-#test((1, 2) + (3, 4), (1, 2, 3, 4))
-#test((a: 1) + (b: 2, c: 3), (a: 1, b: 2, c: 3))
-
-// Subtraction.
-#test(1-4, 3*-1)
-#test(4cm - 2cm, 2cm)
-#test(1e+2-1e-2, 99.99)
-
-// Multiplication.
-#test(2 * 4, 8)
-
-// Division.
-#test(12pt/.4, 30pt)
-#test(7 / 2, 3.5)
-
-// Combination.
-#test(3-4 * 5 < -10, true)
-#test({ let x; x = 1 + 4*5 >= 21 and { x = "a"; x + "b" == "ab" }; x }, true)
-
-// Mathematical identities.
-#let nums = (1, 3.14, 12pt, 45deg, 90%, 13% + 10pt)
-#for v in nums {
- // Test plus and minus.
- test(v + v - v, v)
- test(v - v - v, -v)
-
- // Test plus/minus and multiplication.
- test(v - v, 0 * v)
- test(v + v, 2 * v)
-
- // Integer addition does not give a float.
- if type(v) != "integer" {
- test(v + v, 2.0 * v)
- }
-
- // Linears cannot be divided by themselves.
- if type(v) != "linear" {
- test(v / v, 1.0)
- test(v / v == 1, true)
- }
-}
-
-// Make sure length, relative and linear
-// - can all be added to / subtracted from each other,
-// - multiplied with integers and floats,
-// - divided by floats.
-#let dims = (10pt, 30%, 50% + 3cm)
-#for a in dims {
- for b in dims {
- test(type(a + b), type(a - b))
- }
-
- for b in (7, 3.14) {
- test(type(a * b), type(a))
- test(type(b * a), type(a))
- test(type(a / b), type(a))
- }
-}
-
----
-// Test boolean operators.
-
-// And.
-#test(false and false, false)
-#test(false and true, false)
-#test(true and false, false)
-#test(true and true, true)
-
-// Or.
-#test(false or false, false)
-#test(false or true, true)
-#test(true or false, true)
-#test(true or true, true)
-
-// Short-circuiting.
-#test(false and dont-care, false)
-#test(true or dont-care, true)
-
----
-// Test equality operators.
-
-#test(1 == "hi", false)
-#test(1 == 1.0, true)
-#test(30% == 30% + 0cm, true)
-#test(1in == 0% + 72pt, true)
-#test(30% == 30% + 1cm, false)
-#test("ab" == "a" + "b", true)
-#test(() == (1,), false)
-#test((1, 2, 3) == (1, 2.0) + (3,), true)
-#test((:) == (a: 1), false)
-#test((a: 2 - 1.0, b: 2) == (b: 2, a: 1), true)
-#test([*Hi*] == [*Hi*], true)
-
-#test("a" != "a", false)
-#test([*] != [_], true)
-
----
-// Test comparison operators.
-
-#test(13 * 3 < 14 * 4, true)
-#test(5 < 10, true)
-#test(5 > 5, false)
-#test(5 <= 5, true)
-#test(5 <= 4, false)
-#test(45deg < 1rad, true)
-
----
-// Test assignment operators.
-
-#let x = 0
-{ x = 10 } #test(x, 10)
-{ x -= 5 } #test(x, 5)
-{ x += 1 } #test(x, 6)
-{ x *= x } #test(x, 36)
-{ x /= 2.0 } #test(x, 18.0)
-{ x = "some" } #test(x, "some")
-{ x += "thing" } #test(x, "something")
diff --git a/tests/lang/typ/expr-invalid.typ b/tests/lang/typ/expr-invalid.typ
deleted file mode 100644
index f760ae31..00000000
--- a/tests/lang/typ/expr-invalid.typ
+++ /dev/null
@@ -1,59 +0,0 @@
-// Test invalid expressions.
-// Ref: false
-
----
-// Missing expressions.
-
-// Error: 3 expected expression
-{-}
-
-// Error: 10 expected expression
-#test({1+}, 1)
-
-// Error: 10 expected expression
-#test({2*}, 2)
-
----
-// Mismatched types.
-
-// Error: 2-12 cannot apply '+' to template
-{+([] + [])}
-
-// Error: 2-5 cannot apply '-' to string
-{-""}
-
-// Error: 2-8 cannot apply 'not' to array
-{not ()}
-
-// Error: 1:2-1:12 cannot apply '<=' to relative and relative
-{30% <= 40%}
-
-// Special messages for +, -, * and /.
-// Error: 4:03-4:10 cannot add integer and string
-// Error: 3:12-3:19 cannot subtract integer from relative
-// Error: 2:21-2:29 cannot multiply integer with boolean
-// Error: 1:31-1:39 cannot divide integer by length
-{(1 + "2", 40% - 1, 2 * true, 3 / 12pt)}
-
-// Error: 14-22 cannot apply '+=' to integer and string
-{ let x = 1; x += "2" }
-
----
-// Bad left-hand sides of assignment.
-
-// Error: 3-6 cannot assign to this expression
-{ (x) = "" }
-
-// Error: 3-8 cannot assign to this expression
-{ 1 + 2 += 3 }
-
-// Error: 3-4 unknown variable
-{ z = 1 }
-
-// Error: 3-6 cannot assign to a constant
-{ box = "hi" }
-
-// Works if we define box beforehand
-// (since then it doesn't resolve to the standard library version anymore).
-#let box = ""
-{ box = "hi" }
diff --git a/tests/lang/typ/expr-prec.typ b/tests/lang/typ/expr-prec.typ
deleted file mode 100644
index e64e583c..00000000
--- a/tests/lang/typ/expr-prec.typ
+++ /dev/null
@@ -1,30 +0,0 @@
-// Test operator precedence.
-// Ref: false
-
----
-// Multiplication binds stronger than addition.
-#test(1+2*-3, -5)
-
-// Subtraction binds stronger than comparison.
-#test(3 == 5 - 2, true)
-
-// Boolean operations bind stronger than '=='.
-#test("a" == "a" and 2 < 3, true)
-#test(not "b" == "b", false)
-
-// Assignment binds stronger than boolean operations.
-// Error: 2-7 cannot assign to this expression
-{not x = "a"}
-
----
-// Parentheses override precedence.
-#test((1), 1)
-#test((1+2)*-3, -9)
-
-// Error: 14 expected closing paren
-#test({(1 + 1}, 2)
-
----
-// Precedence doesn't matter for chained unary operators.
-// Error: 2-11 cannot apply '-' to boolean
-{-not true}
diff --git a/tests/lang/typ/expr-unary.typ b/tests/lang/typ/expr-unary.typ
deleted file mode 100644
index c4b1937d..00000000
--- a/tests/lang/typ/expr-unary.typ
+++ /dev/null
@@ -1,23 +0,0 @@
-// Test unary expressions.
-// Ref: false
-
----
-// Test plus and minus.
-#for v in (1, 3.14, 12pt, 45deg, 90%, 13% + 10pt) {
- // Test plus.
- test(+v, v)
-
- // Test minus.
- test(-v, -1 * v)
- test(--v, v)
-
- // Test combination.
- test(-++ --v, -v)
-}
-
-#test(-(4 + 2), 6-12)
-
----
-// Test not.
-#test(not true, false)
-#test(not false, true)
diff --git a/tests/lang/typ/for-invalid.typ b/tests/lang/typ/for-invalid.typ
deleted file mode 100644
index c8bdebdd..00000000
--- a/tests/lang/typ/for-invalid.typ
+++ /dev/null
@@ -1,32 +0,0 @@
-// Test invalid for loop syntax.
-
----
-// Error: 5-5 expected identifier
-#for
-
-// Error: 7-7 expected keyword `in`
-#for v
-
-// Error: 10-10 expected expression
-#for v in
-
-// Error: 15-15 expected body
-#for v in iter
-
----
-// Should output `v in iter`.
-// Error: 5 expected identifier
-#for
-v in iter {}
-
-// Should output `A thing`.
-// Error: 7-10 expected identifier, found string
-A#for "v" thing.
-
-// Should output `in iter`.
-// Error: 6-9 expected identifier, found string
-#for "v" in iter {}
-
-// Should output `+ b in iter`.
-// Error: 7 expected keyword `in`
-#for a + b in iter {}
diff --git a/tests/lang/typ/for-pattern.typ b/tests/lang/typ/for-pattern.typ
deleted file mode 100644
index 38253b33..00000000
--- a/tests/lang/typ/for-pattern.typ
+++ /dev/null
@@ -1,30 +0,0 @@
-// Test for loop patterns.
-// Ref: false
-
----
-#let out = ()
-
-// Values of array.
-#for v in (1, 2, 3) {
- out += (v,)
-}
-
-// Values of dictionary.
-#for v in (a: 4, b: 5) {
- out += (v,)
-}
-
-// Keys and values of dictionary.
-#for k, v in (a: 6, b: 7) {
- out += (k,)
- out += (v,)
-}
-
-#test(out, (1, 2, 3, 4, 5, "a", 6, "b", 7))
-
----
-// Keys and values of array.
-// Error: 6-10 mismatched pattern
-#for k, v in (-1, -2, -3) {
- dont-care
-}
diff --git a/tests/lang/typ/for-value.typ b/tests/lang/typ/for-value.typ
deleted file mode 100644
index 3ab80716..00000000
--- a/tests/lang/typ/for-value.typ
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test return value of for loops.
-
----
-// Template body yields template.
-// Should output `234`.
-#for v in (1, 2, 3, 4) [#if v >= 2 [{v}]]
-
----
-// Block body yields template.
-// Should output `[1st, 2nd, 3rd, 4th, 5th, 6th]`.
-{
- "[" + for v in (1, 2, 3, 4, 5, 6) {
- (if v > 1 [, ]
- + [{v}]
- + if v == 1 [st]
- + if v == 2 [nd]
- + if v == 3 [rd]
- + if v >= 4 [th])
- } + "]"
-}
diff --git a/tests/lang/typ/for.typ b/tests/lang/typ/for.typ
deleted file mode 100644
index 294345b5..00000000
--- a/tests/lang/typ/for.typ
+++ /dev/null
@@ -1,52 +0,0 @@
-// Test for loops.
-// Ref: false
-
----
-// Array.
-
-#for x in () {}
-
-#let sum = 0
-#for x in (1, 2, 3, 4, 5) {
- sum += x
-}
-
-#test(sum, 15)
-
----
-// Dictionary.
-// Ref: true
-(\ #for k, v in (name: "Typst", age: 2) [
- #h(0.5cm) {k}: {v}, \
-])
-
----
-// String.
-{
- let out = ""
- let first = true
- for c in "abc" {
- if not first {
- out += ", "
- }
- first = false
- out += c
- }
- test(out, "a, b, c")
-}
-
----
-// Uniterable expression.
-// Error: 11-15 cannot loop over boolean
-#for v in true {}
-
-// Make sure that we don't complain twice.
-// Error: 11-18 cannot add integer and string
-#for v in 1 + "2" {}
-
-// Error: 14-17 cannot apply '-' to string
-#let error = -""
-#let result = for v in (1, 2, 3) {
- if v < 2 [Ok] else {error}
-}
-#test(result, error)
diff --git a/tests/lang/typ/heading.typ b/tests/lang/typ/heading.typ
deleted file mode 100644
index 8497ec8f..00000000
--- a/tests/lang/typ/heading.typ
+++ /dev/null
@@ -1,44 +0,0 @@
-// Test headings.
-
----
-// Different number of hashtags.
-
-// Valid levels.
-=1
-===2
-======6
-
-// Too many hashtags.
-// Warning: 1-8 should not exceed depth 6
-=======7
-
----
-// Heading continuation over linebreak.
-
-// Code blocks continue heading.
-= A{
- "B"
-}
-
-// Function call continues heading.
-= #box[
- A
-] B
-
-// Without some kind of block, headings end at a line break.
-= A
-B
-
----
-// Heading vs. no heading.
-
-// Parsed as headings if at start of the context.
-/**/ = Ok
-{[== Ok]}
-#box[=== Ok]
-
-// Not at the start of the context.
-No = heading
-
-// Escaped.
-\= No heading
diff --git a/tests/lang/typ/if-invalid.typ b/tests/lang/typ/if-invalid.typ
deleted file mode 100644
index 6d2deab1..00000000
--- a/tests/lang/typ/if-invalid.typ
+++ /dev/null
@@ -1,28 +0,0 @@
-// Test invalid if syntax.
-
----
-// Error: 4 expected expression
-#if
-
-// Error: 4 expected expression
-{if}
-
-// Error: 6 expected body
-#if x
-
-// Error: 1-6 unexpected keyword `else`
-#else {}
-
----
-// Should output `x`.
-// Error: 4 expected expression
-#if
-x {}
-
-// Should output `something`.
-// Error: 6 expected body
-#if x something
-
-// Should output `A thing.`
-// Error: 20 expected body
-A#if false {} #else thing
diff --git a/tests/lang/typ/if-value.typ b/tests/lang/typ/if-value.typ
deleted file mode 100644
index d7124255..00000000
--- a/tests/lang/typ/if-value.typ
+++ /dev/null
@@ -1,21 +0,0 @@
-// Test return value of if expressions.
-// Ref: false
-
----
-{
- let x = 1
- let y = 2
- let z
-
- // Returns if branch.
- z = if x < y { "ok" }
- test(z, "ok")
-
- // Returns else branch.
- z = if x > y { "bad" } else { "ok" }
- test(z, "ok")
-
- // Missing else evaluates to none.
- z = if x > y { "bad" }
- test(z, none)
-}
diff --git a/tests/lang/typ/if.typ b/tests/lang/typ/if.typ
deleted file mode 100644
index 4ed6b649..00000000
--- a/tests/lang/typ/if.typ
+++ /dev/null
@@ -1,45 +0,0 @@
-// Test if-else expressions.
-
----
-// Test condition evaluation.
-#if 1 < 2 [
- Ok.
-]
-
-#if true == false [
- Bad, but we {dont-care}!
-]
-
----
-// Brace in condition.
-#if {true} [
- Ok.
-]
-
-// Multi-line condition with parens.
-#if (
- 1 + 1
- == 1
-) {
- nope
-} #else {
- "Ok."
-}
-
-// Multiline.
-#if false [
- Bad.
-] #else {
- let pt = "."
- "Ok" + pt
-}
-
----
-// Condition must be boolean.
-// If it isn't, neither branch is evaluated.
-// Error: 5-14 expected boolean, found string
-#if "a" + "b" { nope } #else { nope }
-
-// Make sure that we don't complain twice.
-// Error: 5-12 cannot add integer and string
-#if 1 + "2" {}
diff --git a/tests/lang/typ/let-invalid.typ b/tests/lang/typ/let-invalid.typ
deleted file mode 100644
index f29353ed..00000000
--- a/tests/lang/typ/let-invalid.typ
+++ /dev/null
@@ -1,20 +0,0 @@
-// Test invalid let binding syntax.
-
----
-// Error: 5 expected identifier
-#let
-
-// Error: 6-9 expected identifier, found string
-#let "v"
-
-// Should output `1`.
-// Error: 7 expected semicolon or line break
-#let v 1
-
-// Error: 9 expected expression
-#let v =
-
----
-// Should output `= 1`.
-// Error: 6-9 expected identifier, found string
-#let "v" = 1
diff --git a/tests/lang/typ/let-terminated.typ b/tests/lang/typ/let-terminated.typ
deleted file mode 100644
index 623265e0..00000000
--- a/tests/lang/typ/let-terminated.typ
+++ /dev/null
@@ -1,28 +0,0 @@
-// Test termination of let statements.
-
----
-// 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))
diff --git a/tests/lang/typ/let.typ b/tests/lang/typ/let.typ
deleted file mode 100644
index e609d3a9..00000000
--- a/tests/lang/typ/let.typ
+++ /dev/null
@@ -1,11 +0,0 @@
-// Test let bindings.
-// Ref: false
-
----
-// Automatically initialized with none.
-#let x
-#test(x, none)
-
-// Manually initialized with one.
-#let x = 1
-#test(x, 1)
diff --git a/tests/lang/typ/linebreak.typ b/tests/lang/typ/linebreak.typ
deleted file mode 100644
index e6392992..00000000
--- a/tests/lang/typ/linebreak.typ
+++ /dev/null
@@ -1,23 +0,0 @@
-// Test forced line breaks.
-
----
-// Directly after word.
-Line\ Break
-
-// Spaces around.
-Line \ Break
-
-// Directly before word does not work.
-No \Break
-
----
-// Leading line break.
-\ Leading
-
-// Trailing before paragraph break.
-Trailing 1 \
-
-Trailing 2
-
-// Trailing before end of document.
-Trailing 3 \
diff --git a/tests/lang/typ/nbsp.typ b/tests/lang/typ/nbsp.typ
deleted file mode 100644
index 5af6c84f..00000000
--- a/tests/lang/typ/nbsp.typ
+++ /dev/null
@@ -1,5 +0,0 @@
-// Test the non breaking space.
-
----
-// Parsed correctly, but not actually doing anything at the moment.
-The non-breaking~space does not work.
diff --git a/tests/lang/typ/raw.typ b/tests/lang/typ/raw.typ
deleted file mode 100644
index f5074c8e..00000000
--- a/tests/lang/typ/raw.typ
+++ /dev/null
@@ -1,51 +0,0 @@
-// Test raw blocks.
-
----
-// No extra space.
-`A``B`
-
----
-// Typst syntax inside.
-`#let x = 1` \
-`#[f 1]`
-
----
-// Multiline block splits paragraphs.
-
-First
-```
-Second
-```
-Third
-
----
-// Lots of backticks inside.
-````
-```backticks```
-````
-
----
-// Trimming.
-
-// Space between "rust" and "let" is trimmed.
-The keyword ```rust let```.
-
-// Trimming depends on number backticks.
-<``> \
-<` untrimmed `> \
-<``` trimmed` ```> \
-<``` trimmed ```> \
-<``` trimmed```>
-
-// Multiline trimming.
-```py
-import this
-
-def hi():
- print("Hi!")
-```
-
----
-// Unterminated.
-// Error: 2:1 expected backtick(s)
-`endless
diff --git a/tests/lang/typ/repr.typ b/tests/lang/typ/repr.typ
deleted file mode 100644
index 666db428..00000000
--- a/tests/lang/typ/repr.typ
+++ /dev/null
@@ -1,50 +0,0 @@
-// Test representation of values in the document.
-
----
-// Variables.
-
-#let name = "Typst"
-#let ke-bab = "Kebab!"
-#let α = "Alpha"
-
-{name} \
-{ke-bab} \
-{α} \
-
-// Error: 2-3 unknown variable
-{_}
-
----
-// Literal values.
-{none} (empty) \
-{true} \
-{false} \
-
----
-// Numerical values.
-{1} \
-{1.0e-4} \
-{3.15} \
-{1e-10} \
-{50.368%} \
-{0.0000012345pt} \
-{4.5cm} \
-{12e1pt} \
-{2.5rad} \
-{45deg} \
-
-// Not in monospace via repr.
-#repr(45deg)
-
----
-// Colors.
-{#f7a20500} \
-
----
-// Strings and escaping.
-{"hi"} \
-{"a\n[]\"\u{1F680}string"} \
-
----
-// Templates.
-{[*{"H" + "i"} there*]}
diff --git a/tests/lang/typ/spacing.typ b/tests/lang/typ/spacing.typ
deleted file mode 100644
index d44cd84c..00000000
--- a/tests/lang/typ/spacing.typ
+++ /dev/null
@@ -1,27 +0,0 @@
-// Test spacing around control flow structures.
-
----
-// Spacing around let.
-
-// Error: 6 expected identifier
-A#let;B \
-A#let x = 1;B #test(x, 1) \
-A #let x = 2;B #test(x, 2) \
-A#let x = 3; B #test(x, 3) \
-
----
-// Spacing around if-else.
-
-A#if true[B]C \
-A#if true[B] C \
-A #if true{"B"}C \
-A #if true{"B"} C \
-A#if false [] #else [B]C \
-A#if true [B] #else [] C \
-
----
-// Spacing around for loop.
-
-A#for _ in (none,) [B]C \
-A#for _ in (none,) [B] C \
-A #for _ in (none,) [B]C \
diff --git a/tests/lang/typ/strong.typ b/tests/lang/typ/strong.typ
deleted file mode 100644
index b02a55a5..00000000
--- a/tests/lang/typ/strong.typ
+++ /dev/null
@@ -1,14 +0,0 @@
-// Test strong toggle.
-
----
-// Basic.
-*Strong!*
-
-// Inside of words.
-Partly str*ength*ened.
-
-// Scoped to body.
-#box[*Scoped] to body.
-
-// Unterminated is fine.
-*The End
diff --git a/tests/lang/typ/text.typ b/tests/lang/typ/text.typ
deleted file mode 100644
index d86f4895..00000000
--- a/tests/lang/typ/text.typ
+++ /dev/null
@@ -1,8 +0,0 @@
-// Test simple text.
-
----
-Hello 🌏!
-
----
-// Some code stuff in text.
-let f() , ; : | + - /= == 12 "string"