parent
5f1eaaf3b1
commit
f87f8ec3f7
|
@ -345,7 +345,9 @@ fn (mut g Gen) gen_fn_decl(node &ast.FnDecl, skip bool) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
info := var.obj as ast.Var
|
info := var.obj as ast.Var
|
||||||
g.writeln('${g.typ(info.typ)}$deref $var.name;')
|
if g.table.get_type_symbol(info.typ).kind != .function {
|
||||||
|
g.writeln('${g.typ(info.typ)}$deref $var.name;')
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
[has_globals]
|
||||||
|
module main
|
||||||
|
|
||||||
|
__global fcall_count = int(0)
|
||||||
|
|
||||||
|
fn f1() {
|
||||||
|
println(1)
|
||||||
|
fcall_count++
|
||||||
|
}
|
||||||
|
|
||||||
|
fn f2() {
|
||||||
|
println(2)
|
||||||
|
fcall_count++
|
||||||
|
}
|
||||||
|
|
||||||
|
fn f3(f fn ()) {
|
||||||
|
f()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn func_defer() {
|
||||||
|
mut func := f1
|
||||||
|
println('Before')
|
||||||
|
defer {
|
||||||
|
func()
|
||||||
|
}
|
||||||
|
defer {
|
||||||
|
f3(func)
|
||||||
|
}
|
||||||
|
func = f2
|
||||||
|
println('After')
|
||||||
|
assert true
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_defer_with_fn_var() {
|
||||||
|
func_defer()
|
||||||
|
assert fcall_count == 2
|
||||||
|
}
|
Loading…
Reference in New Issue