summaryrefslogtreecommitdiff
path: root/tests/typ/code/ops-prec.typ
blob: 2cec0d04637b0cff1f6c718f5d593fcb8624d058 (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
// 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 access this expression mutably
{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}