@@ -508,12 +508,14 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
508508 unwrapped_val_type := g.unwrap_generic (val_type)
509509 right_sym := g.table.sym (unwrapped_val_type)
510510 unaliased_right_sym := g.table.final_sym (unwrapped_val_type)
511- is_fixed_array_var := ! g.pref.translated && unaliased_right_sym. kind == .array_fixed
512- && val ! is ast.ArrayInit
511+ unaliased_left_sym := g.table. final_sym (g. unwrap_generic (var_type))
512+ is_fixed_array_var := unaliased_right_sym. kind == .array_fixed && val ! is ast.ArrayInit
513513 && (val in [ast.Ident, ast.IndexExpr, ast.CallExpr, ast.SelectorExpr, ast.DumpExpr, ast.InfixExpr]
514514 || (val is ast.CastExpr && val.expr ! is ast.ArrayInit)
515515 || (val is ast.PrefixExpr && val.op == .arrow)
516516 || (val is ast.UnsafeExpr && val.expr in [ast.SelectorExpr, ast.Ident, ast.CallExpr]))
517+ && ! ((g.pref.translated || g.file.is_translated)
518+ && unaliased_left_sym.kind != .array_fixed)
517519 g.is_assign_lhs = true
518520 g.assign_op = node.op
519521
@@ -553,10 +555,18 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
553555 }
554556 g.writeln (';}' )
555557 }
556- } else if node.op == .assign && ! g.pref.translated && (is_fixed_array_init
558+ } else if node.op == .assign && (is_fixed_array_init
557559 || (unaliased_right_sym.kind == .array_fixed && val in [ast.Ident, ast.CastExpr])) {
558560 // Fixed arrays
559- if is_fixed_array_init && var_type.has_flag (.option) {
561+ if unaliased_left_sym.kind != .array_fixed && unaliased_right_sym.kind == .array_fixed
562+ && (g.pref.translated || g.file.is_translated) {
563+ // translated:
564+ // arr = [5]u8{}
565+ // ptr = arr => ptr = &arr[0]
566+ g.expr (left)
567+ g.write (' = ' )
568+ g.expr (val)
569+ } else if is_fixed_array_init && var_type.has_flag (.option) {
560570 g.expr (left)
561571 g.write (' = ' )
562572 g.expr_with_opt (val, val_type, var_type)
0 commit comments