diff --git a/vlib/v/gen/c/comptime.v b/vlib/v/gen/c/comptime.v index 5fff17b520..2b9868311f 100644 --- a/vlib/v/gen/c/comptime.v +++ b/vlib/v/gen/c/comptime.v @@ -150,7 +150,11 @@ fn (mut g Gen) comptime_call(mut node ast.ComptimeCall) { } } } - g.write(' ); // vweb action call with args') + if g.inside_call { + g.write(')') + } else { + g.write(');') + } return } mut j := 0 diff --git a/vlib/v/tests/comptime_call_in_fn_call_test.v b/vlib/v/tests/comptime_call_in_fn_call_test.v new file mode 100644 index 0000000000..eb614b47bf --- /dev/null +++ b/vlib/v/tests/comptime_call_in_fn_call_test.v @@ -0,0 +1,29 @@ +struct Foo {} + +fn (f Foo) a() string { + return 'method_a' +} + +fn (f Foo) b() string { + return 'method_b' +} + +fn test_comptime_call_in_fn_call() { + f := Foo{} + + mut rets := []string{} + + $for method in Foo.methods { + x := f.$method() + println(x) + println(f.$method()) + rets << get_string(f.$method()) + } + assert rets.len == 2 + assert rets[0] == 'method_a' + assert rets[1] == 'method_b' +} + +fn get_string(s string) string { + return s +}