Skip to content

Commit 93a2ffa

Browse files
authored
cgen: fix fixed array assignment from unsafe block (#17647)
1 parent 39e80af commit 93a2ffa

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

vlib/v/gen/c/assign.v

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,7 +329,8 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
329329
unaliased_right_sym := g.table.final_sym(unwrapped_val_type)
330330
is_fixed_array_var := unaliased_right_sym.kind == .array_fixed && val !is ast.ArrayInit
331331
&& (val in [ast.Ident, ast.IndexExpr, ast.CallExpr, ast.SelectorExpr]
332-
|| (val is ast.CastExpr && (val as ast.CastExpr).expr !is ast.ArrayInit))
332+
|| (val is ast.CastExpr && (val as ast.CastExpr).expr !is ast.ArrayInit)
333+
|| (val is ast.UnsafeExpr && (val as ast.UnsafeExpr).expr is ast.Ident))
333334
&& !g.pref.translated
334335
g.is_assign_lhs = true
335336
g.assign_op = node.op
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
fn test_fixed_array_on_unsafe_int() {
2+
x := [3]int{}
3+
y := unsafe { x }
4+
assert x == [0, 0, 0]!
5+
}
6+
7+
fn test_fixed_array_on_unsafe_string() {
8+
x := [3]string{init: ''}
9+
y := unsafe { x }
10+
assert x == ['', '', '']!
11+
}

0 commit comments

Comments
 (0)