diff --git a/vlib/v/gen/c/fn.v b/vlib/v/gen/c/fn.v index 55710223697ade..040c8e46acdbdf 100644 --- a/vlib/v/gen/c/fn.v +++ b/vlib/v/gen/c/fn.v @@ -593,6 +593,11 @@ fn (mut g Gen) closure_ctx(node ast.FnDecl) string { } fn (mut g Gen) gen_anon_fn(mut node ast.AnonFn) { + is_amp := g.is_amp + g.is_amp = false + defer { + g.is_amp = is_amp + } g.gen_anon_fn_decl(mut node) fn_name := g.gen_closure_fn_name(node) if !node.decl.scope.has_inherited_vars() { diff --git a/vlib/v/tests/fns/anon_with_prefix_test.v b/vlib/v/tests/fns/anon_with_prefix_test.v new file mode 100644 index 00000000000000..e7070ef7eb9033 --- /dev/null +++ b/vlib/v/tests/fns/anon_with_prefix_test.v @@ -0,0 +1,19 @@ +module main + +struct TestA { + aa int +} + +fn test_main() { + func := &fn () int { + arr := []TestA{} + return arr.len + } + assert func() == 0 + + func2 := &fn () int { + arr := []TestA{} + return arr.len + } + assert func2() == 0 +}