typst/tests/typ/bugs/3275-loop-errors.typ

68 lines
1.4 KiB
XML

// Issue #3275: clearer errors for loops, https://github.com/typst/typst/issues/3275
// Ref: false
---
// Normal variable.
#for x in (1, 2) {}
#for x in (a: 1, b: 2) {}
#for x in "foo" {}
#for x in bytes("😊") {}
---
// Placeholder.
#for _ in (1, 2) {}
#for _ in (a: 1, b: 2) {}
#for _ in "foo" {}
#for _ in bytes("😊") {}
---
// Destructuring.
#for (a,b,c) in (("a", 1, bytes(())), ("b", 2, bytes(""))) {}
#for (a, ..) in (("a", 1, bytes(())), ("b", 2, bytes(""))) {}
#for (k, v) in (a: 1, b: 2, c: 3) {}
#for (.., v) in (a: 1, b: 2, c: 3) {}
---
// Error: 11-17 cannot loop over content
#for x in [1, 2] {}
---
// Error: 11-25 cannot loop over arguments
#for _ in arguments("a") {}
---
// Error: 16-21 cannot loop over integer
#for (x, y) in 12306 {}
---
// Error: 16-22 cannot loop over content
#for (x, y) in [1, 2] {}
---
// Error: 6-12 cannot destructure values of string
#for (x, y) in "foo" {}
---
// Error: 6-12 cannot destructure string
#for (x, y) in ("foo", "bar") {}
---
// Error: 6-12 cannot destructure values of bytes
#for (x, y) in bytes("😊") {}
---
// Error: 6-12 cannot destructure bytes
#for (x, y) in (bytes((1,2)), bytes((1,2))) {}
---
// Error: 6-12 cannot destructure integer
#for (x, y) in (1, 2) {}
---
// Error: 10-11 not enough elements to destructure
#for (x, y) in ((1,), (2,)) {}
---
// Error: 6-12 too many elements to destructure
#for (x, y) in ((1,2,3), (4,5,6)) {}