v2 / vlib / v / tests / defer / defer_with_fn_var_test.v
37 lines · 31 sloc · 377 bytes · be82b0395efa8d7cfc63e81550873fe0fafe5790
Raw
1@[has_globals]
2module main
3
4__global fcall_count = int(0)
5
6fn f1() {
7 println(1)
8 fcall_count++
9}
10
11fn f2() {
12 println(2)
13 fcall_count++
14}
15
16fn f3(f fn ()) {
17 f()
18}
19
20fn func_defer() {
21 mut func := f1
22 println('Before')
23 defer {
24 func()
25 }
26 defer {
27 f3(func)
28 }
29 func = f2
30 println('After')
31 assert true
32}
33
34fn test_defer_with_fn_var() {
35 func_defer()
36 assert fcall_count == 2
37}
38