summaryrefslogtreecommitdiff
path: root/tests/typ/expr/ops-invalid.typ
blob: f760ae3123f98160595d98a4619d9aefcc1c21d5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
// 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" }