v2 / vlib / v / tests / defer / defer_static_test.v
35 lines · 32 sloc · 440 bytes · be82b0395efa8d7cfc63e81550873fe0fafe5790
Raw
1@[unsafe]
2fn g() {
3 mut static levels := 0
4 levels++
5 defer { levels-- }
6}
7
8fn f(depth int) {
9 if depth == 0 {
10 return
11 }
12 unsafe {
13 mut static levels := 0
14 levels++
15 defer { levels-- }
16 if depth == 3 {
17 assert levels == 1
18 }
19 if depth == 2 {
20 assert levels == 2
21 }
22 if depth == 1 {
23 assert levels == 3
24 }
25 println('levels: ${levels} | depth: ${depth}')
26 f(depth - 1)
27 }
28}
29
30fn test_main() {
31 f(3)
32 f(3)
33
34 unsafe { g() }
35}
36