| 1 | @[unsafe] |
| 2 | fn g() { |
| 3 | mut static levels := 0 |
| 4 | levels++ |
| 5 | defer { levels-- } |
| 6 | } |
| 7 | |
| 8 | fn 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 | |
| 30 | fn test_main() { |
| 31 | f(3) |
| 32 | f(3) |
| 33 | |
| 34 | unsafe { g() } |
| 35 | } |
| 36 |