summaryrefslogtreecommitdiff
path: root/tests/typ/code/break-continue.typ
blob: 60dac44d31c6c9943c3c3474db83fea3221eb510 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
// Test break and continue in loops.
// Ref: false

---
// Test break.

#let var = 0
#let error = false

#for i in range(10) {
  var += i
  if i > 5 {
    break
    error = true
  }
}

#test(var, 21)
#test(error, false)

---
// Test joining with break.

#let i = 0
#let x = while true {
  i += 1
  str(i)
  if i >= 5 {
    "."
    break
  }
}

#test(x, "12345.")

---
// Test continue.

#let i = 0
#let x = 0

#while x < 8 {
  i += 1
  if mod(i, 3) == 0 {
    continue
  }
  x += i
}

// If continue did not work, this would equal 10.
#test(x, 12)

---
// Test joining with continue.

#let x = for i in range(5) {
  "a"
  if mod(i, 3) == 0 {
    "_"
    continue
  }
  str(i)
}

#test(x, "a_a1a2a_a4")

---
// Test break outside of loop.

#let f() = {
  // Error: 3-8 cannot break outside of loop
  break
}

#f()

---
// Test continue outside of loop.

// Error: 12-20 cannot continue outside of loop
#let x = { continue }

---
// Error: 1-10 unexpected keyword `continue`
#continue