typst/tests/typ/compiler/ops-invalid.typ
2023-01-27 11:54:30 +01:00

129 lines
2.1 KiB
Typst

// Test invalid operations.
// Ref: false
---
// Error: 4 expected expression
#{-}
---
// Error: 10 expected expression
#test({1+}, 1)
---
// Error: 10 expected expression
#test({2*}, 2)
---
// Error: 3-13 cannot apply '+' to content
#{+([] + [])}
---
// Error: 3-6 cannot apply '-' to string
#{-""}
---
// Error: 3-9 cannot apply 'not' to array
#{not ()}
---
// Error: 3-19 cannot apply '<=' to relative length and ratio
#{30% + 1pt <= 40%}
---
// Error: 3-14 cannot apply '<=' to length and length
#{1em <= 10pt}
---
// Error: 3-12 cannot divide by zero
#{1.2 / 0.0}
---
// Error: 3-8 cannot divide by zero
#{1 / 0}
---
// Error: 3-15 cannot divide by zero
#{15deg / 0deg}
---
// Special messages for +, -, * and /.
// Error: 4-11 cannot add integer and string
#{(1 + "2", 40% - 1)}
---
// Error: 15-23 cannot add integer and string
#{ let x = 1; x += "2" }
---
// Error: 4-13 cannot divide ratio by length
#{ 10% / 5pt }
---
// Error: 4-13 cannot divide these two lengths
#{ 1em / 5pt }
---
// Error: 4-20 cannot divide relative length by ratio
#{ (10% + 1pt) / 5% }
---
// Error: 4-29 cannot divide these two relative lengths
#{ (10% + 1pt) / (20% + 1pt) }
---
// Error: 13-20 cannot subtract integer from ratio
#{(1234567, 40% - 1)}
---
// Error: 3-11 cannot multiply integer with boolean
#{2 * true}
---
// Error: 3-11 cannot divide integer by length
#{3 / 12pt}
---
// Error: 3-10 cannot repeat this string -1 times
#{-1 * ""}
---
#{
let x = 2
for _ in range(61) {
(x) *= 2
}
// Error: 3-17 cannot repeat this string 4611686018427387904 times
x * "abcdefgh"
}
---
// Error: 5-6 unknown variable
#{ (x) = "" }
---
// Error: 4-9 cannot mutate a temporary value
#{ 1 + 2 += 3 }
---
// Error: 2:3-2:8 cannot apply 'not' to string
#let x = "Hey"
#{not x = "a"}
---
// Error: 8-9 unknown variable
#{ 1 + x += 3 }
---
// Error: 4-5 unknown variable
#{ z = 1 }
---
// Error: 4-8 cannot mutate a constant
#{ rect = "hi" }
---
// Works if we define rect beforehand
// (since then it doesn't resolve to the standard library version anymore).
#let rect = ""
#{ rect = "hi" }