@@ -53,6 +53,18 @@ fn (mut g Gen) array_init(node ast.ArrayInit, var_name string) {
53
53
} else {
54
54
if node.elem_type.has_flag (.option) {
55
55
g.expr_with_opt (expr, node.expr_types[i], node.elem_type)
56
+ } else if elem_type.unaliased_sym.kind == .array_fixed
57
+ && expr in [ast.Ident, ast.SelectorExpr] {
58
+ g.write ('{' )
59
+ info := elem_type.unaliased_sym.info as ast.ArrayFixed
60
+ for idx in 0 .. info.size {
61
+ g.expr (expr)
62
+ g.write ('[${idx} ]' )
63
+ if idx != info.size - 1 {
64
+ g.write (', ' )
65
+ }
66
+ }
67
+ g.write ('}' )
56
68
} else {
57
69
g.expr_with_cast (expr, node.expr_types[i], node.elem_type)
58
70
}
@@ -153,11 +165,29 @@ fn (mut g Gen) fixed_array_init(node ast.ArrayInit, array_type Type, var_name st
153
165
}
154
166
g.write ('{' )
155
167
if node.has_val {
168
+ elem_type := (array_type.unaliased_sym.info as ast.ArrayFixed ).elem_type
169
+ elem_sym := g.table.final_sym (elem_type)
156
170
for i, expr in node.exprs {
157
- if expr.is_auto_deref_var () {
158
- g.write ('*' )
171
+ if elem_sym.kind == .array_fixed && expr in [ast.Ident, ast.SelectorExpr] {
172
+ g.write ('{' )
173
+ info := array_type.unaliased_sym.info as ast.ArrayFixed
174
+ for idx in 0 .. info.size {
175
+ if expr.is_auto_deref_var () {
176
+ g.write ('*' )
177
+ }
178
+ g.expr (expr)
179
+ g.write ('[${idx} ]' )
180
+ if idx != info.size - 1 {
181
+ g.write (', ' )
182
+ }
183
+ }
184
+ g.write ('}' )
185
+ } else {
186
+ if expr.is_auto_deref_var () {
187
+ g.write ('*' )
188
+ }
189
+ g.expr (expr)
159
190
}
160
- g.expr (expr)
161
191
if i != node.exprs.len - 1 {
162
192
g.write (', ' )
163
193
}
0 commit comments