cgen: fix error for fn with fixed array argument
parent
2d867a2766
commit
f6a5c43da4
|
|
@ -238,11 +238,12 @@ fn (mut g Gen) gen_assign_stmt(node_ ast.AssignStmt) {
|
|||
} else {
|
||||
g.out.go_back_to(pos)
|
||||
is_var_mut := !is_decl && left.is_auto_deref_var()
|
||||
addr := if is_var_mut { '' } else { '&' }
|
||||
addr_left := if is_var_mut { '' } else { '&' }
|
||||
g.writeln('')
|
||||
g.write('memcpy($addr')
|
||||
g.write('memcpy($addr_left')
|
||||
g.expr(left)
|
||||
g.writeln(', &$v_var, sizeof($arr_typ));')
|
||||
addr_val := if is_fixed_array_var { '' } else { '&' }
|
||||
g.writeln(', $addr_val$v_var, sizeof($arr_typ));')
|
||||
}
|
||||
g.is_assign_lhs = false
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
struct Test {
|
||||
mut:
|
||||
value [4]int
|
||||
}
|
||||
|
||||
fn (mut t Test) set(new_value [4]int) {
|
||||
t.value = new_value
|
||||
}
|
||||
|
||||
fn test_fn_with_fixed_array_argument() {
|
||||
mut t := Test{}
|
||||
|
||||
println(t)
|
||||
assert '$t.value' == '[0, 0, 0, 0]'
|
||||
|
||||
t.set([1, 2, 3, 4]!)
|
||||
|
||||
println(t)
|
||||
assert '$t.value' == '[1, 2, 3, 4]'
|
||||
}
|
||||
Loading…
Reference in New Issue