diff --git a/vlib/v/checker/comptime.v b/vlib/v/checker/comptime.v index 8f8d6e5466bb2a..37f4c76201acff 100644 --- a/vlib/v/checker/comptime.v +++ b/vlib/v/checker/comptime.v @@ -284,6 +284,14 @@ fn (mut c Checker) comptime_for(mut node ast.ComptimeFor) { unwrapped_expr_type := c.unwrap_generic(field.typ) tsym := c.table.sym(unwrapped_expr_type) c.table.dumps[int(unwrapped_expr_type.clear_flags(.option, .result, .atomic_f))] = tsym.cname + if tsym.kind == .array_fixed { + info := tsym.info as ast.ArrayFixed + if !info.is_fn_ret { + // for dumping fixed array we must register the fixed array struct to return from function + c.table.find_or_register_array_fixed(info.elem_type, info.size, + info.size_expr, true) + } + } } c.comptime_for_field_var = '' c.inside_comptime_for_field = false diff --git a/vlib/v/tests/comptime_array_fixed_field_test.v b/vlib/v/tests/comptime_array_fixed_field_test.v new file mode 100644 index 00000000000000..56af4fc6042391 --- /dev/null +++ b/vlib/v/tests/comptime_array_fixed_field_test.v @@ -0,0 +1,11 @@ +struct Another { + a [3]int + b [4]u8 + c [2]u32 +} + +fn test_main() { + $for f in Another.fields { + } + assert true +}