diff --git a/vlib/v/gen/c/index.v b/vlib/v/gen/c/index.v index 76f6dedd42..8a1d59fac3 100644 --- a/vlib/v/gen/c/index.v +++ b/vlib/v/gen/c/index.v @@ -348,13 +348,16 @@ fn (mut g Gen) index_of_fixed_array(node ast.IndexExpr, sym ast.TypeSymbol) { g.writeln(';') g.past_tmp_var_done(past) } else if node.left is ast.IndexExpr && node.left.is_setter { - past := g.past_tmp_var_new() + line := g.go_before_last_stmt().trim_space() + g.empty_line = true + tmp_var := g.new_tmp_var() styp := g.styp(node.left_type) - g.write('${styp}* ${past.tmp_var} = &') + g.write('${styp}* ${tmp_var} = &') g.expr(node.left) g.writeln(';') + g.write(line) g.write('(*') - g.past_tmp_var_done(past) + g.write(tmp_var) g.write(')') } else { if is_fn_index_call { diff --git a/vlib/v/tests/left_shift_array_fixed_test.v b/vlib/v/tests/left_shift_array_fixed_test.v new file mode 100644 index 0000000000..562cbae46c --- /dev/null +++ b/vlib/v/tests/left_shift_array_fixed_test.v @@ -0,0 +1,7 @@ +fn test_main() { + mut space := [2][2][]int{} + space[1][1] << 123 + space[0][0] << 321 + assert space[1][1] == [123] + assert space[0][0] == [321] +}