From ae66145e5a2f487ce0593d398574b8edcdbe599e Mon Sep 17 00:00:00 2001 From: Felipe Pena Date: Mon, 15 Dec 2025 04:12:35 -0300 Subject: [PATCH] cgen: fix array init with fixed array from return call (fix #25954) (#25971) --- vlib/v/gen/c/array.v | 2 +- .../builtin_arrays/array_init_fixed_array_ret_test.v | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 vlib/v/tests/builtin_arrays/array_init_fixed_array_ret_test.v diff --git a/vlib/v/gen/c/array.v b/vlib/v/gen/c/array.v index 59b20cd19..899cc07e8 100644 --- a/vlib/v/gen/c/array.v +++ b/vlib/v/gen/c/array.v @@ -61,7 +61,7 @@ fn (mut g Gen) array_init(node ast.ArrayInit, var_name string) { if node.elem_type.has_flag(.option) { g.expr_with_opt(expr, expr_type, node.elem_type) } else if elem_type.unaliased_sym.kind == .array_fixed - && expr in [ast.Ident, ast.SelectorExpr] { + && expr in [ast.Ident, ast.SelectorExpr, ast.CallExpr] { info := elem_type.unaliased_sym.info as ast.ArrayFixed g.fixed_array_var_init(g.expr_string(expr), expr.is_auto_deref_var(), info.elem_type, info.size) diff --git a/vlib/v/tests/builtin_arrays/array_init_fixed_array_ret_test.v b/vlib/v/tests/builtin_arrays/array_init_fixed_array_ret_test.v new file mode 100644 index 000000000..b4286dc60 --- /dev/null +++ b/vlib/v/tests/builtin_arrays/array_init_fixed_array_ret_test.v @@ -0,0 +1,10 @@ +module main + +fn ret() [2]int { + return [3, 4]! +} + +fn test_main() { + coords := [ret()] + assert coords[0] == [3, 4]! +} -- 2.39.5