From 7b8044b8c45dcff5d43ba38fdc3e34dd2eeaefb9 Mon Sep 17 00:00:00 2001 From: yuyi Date: Mon, 24 Oct 2022 03:23:15 +0800 Subject: [PATCH] cgen: fix using 'array' name variable in array_init (#16168) --- vlib/builtin/array_test.v | 6 ++++++ vlib/v/gen/c/assign.v | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/vlib/builtin/array_test.v b/vlib/builtin/array_test.v index c44e8fe0b6..3881276ef3 100644 --- a/vlib/builtin/array_test.v +++ b/vlib/builtin/array_test.v @@ -1601,3 +1601,9 @@ fn test_2d_array_init_with_it() { a := [][]int{len: 6, init: f(it, 2 * it)} assert a == [[0, 0], [1, 2], [2, 4], [3, 6], [4, 8], [5, 10]] } + +fn test_using_array_name_variable() { + array := []int{len: 4, init: it} + println(array) + assert array == [0, 1, 2, 3] +} diff --git a/vlib/v/gen/c/assign.v b/vlib/v/gen/c/assign.v index d5aed35245..90959daa5a 100644 --- a/vlib/v/gen/c/assign.v +++ b/vlib/v/gen/c/assign.v @@ -448,7 +448,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) { g.is_shared = var_type.has_flag(.shared_f) if is_fixed_array_init && !has_val { if val is ast.ArrayInit { - g.array_init(val, ident.name) + g.array_init(val, c_name(ident.name)) } else { g.write('{0}') } @@ -460,7 +460,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) { g.write('*') } if val is ast.ArrayInit { - g.array_init(val, ident.name) + g.array_init(val, c_name(ident.name)) } else if val_type.has_flag(.shared_f) { g.expr_with_cast(val, val_type, var_type) } else {