From 7099391db9c861668dba95a9004888f9dd6a21bf Mon Sep 17 00:00:00 2001 From: Krchi <997054144@qq.com> Date: Mon, 12 Jan 2026 19:16:50 +0800 Subject: [PATCH] cgen: fix call with fixed array of builtin struct (#26328) --- vlib/v/gen/c/cgen.v | 9 +++++---- .../fixed_array_of_builtin_struct_with_fn_call_test.v | 8 ++++++++ 2 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 vlib/v/tests/builtin_arrays/fixed_array_of_builtin_struct_with_fn_call_test.v diff --git a/vlib/v/gen/c/cgen.v b/vlib/v/gen/c/cgen.v index b7edd3228..222b87d38 100644 --- a/vlib/v/gen/c/cgen.v +++ b/vlib/v/gen/c/cgen.v @@ -1763,7 +1763,7 @@ pub fn (mut g Gen) write_typedef_types() { .array_fixed { info := sym.info as ast.ArrayFixed elem_sym := g.table.sym(info.elem_type) - if elem_sym.is_builtin() { + if elem_sym.kind != .struct && elem_sym.is_builtin() { styp := sym.cname len := info.size if len > 0 { @@ -7090,9 +7090,10 @@ fn (mut g Gen) write_types(symbols []&ast.TypeSymbol) { } ast.ArrayFixed { elem_sym := g.table.sym(sym.info.elem_type) - if !elem_sym.is_builtin() && !sym.info.elem_type.has_flag(.generic) - && !sym.info.is_fn_ret && (!g.pref.skip_unused - || (!sym.info.is_fn_ret && sym.idx in g.table.used_features.used_syms)) { + if (elem_sym.kind == .struct || !elem_sym.is_builtin()) + && !sym.info.elem_type.has_flag(.generic) && !sym.info.is_fn_ret + && (!g.pref.skip_unused || (!sym.info.is_fn_ret + && sym.idx in g.table.used_features.used_syms)) { // .array_fixed { styp := sym.cname // array_fixed_char_300 => char x[300] diff --git a/vlib/v/tests/builtin_arrays/fixed_array_of_builtin_struct_with_fn_call_test.v b/vlib/v/tests/builtin_arrays/fixed_array_of_builtin_struct_with_fn_call_test.v new file mode 100644 index 000000000..b22e87f08 --- /dev/null +++ b/vlib/v/tests/builtin_arrays/fixed_array_of_builtin_struct_with_fn_call_test.v @@ -0,0 +1,8 @@ +fn get_foo_array(arr [2]VAttribute) []VAttribute { + return [arr[0], arr[1]] +} + +fn test_main() { + arr := get_foo_array([VAttribute{}, VAttribute{}]!) + assert arr == get_foo_array([VAttribute{}, VAttribute{}]!) +} -- 2.39.5