Skip to content

Commit b036a6a

Browse files
authored
cgen: fix codegen for assign from unsafe fn returning fixed array (fix #23546) (#23548)
1 parent 45b79df commit b036a6a

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

‎vlib/v/gen/c/assign.v‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,7 @@ fn (mut g Gen) assign_stmt(node_ ast.AssignStmt) {
471471
&& (val in [ast.Ident, ast.IndexExpr, ast.CallExpr, ast.SelectorExpr, ast.DumpExpr, ast.InfixExpr]
472472
|| (val is ast.CastExpr && val.expr !is ast.ArrayInit)
473473
|| (val is ast.PrefixExpr && val.op == .arrow)
474-
|| (val is ast.UnsafeExpr && val.expr in [ast.SelectorExpr, ast.Ident]))
474+
|| (val is ast.UnsafeExpr && val.expr in [ast.SelectorExpr, ast.Ident, ast.CallExpr]))
475475
g.is_assign_lhs = true
476476
g.assign_op = node.op
477477

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
@[unsafe]
2+
fn test() [5]int {
3+
return [5]int{}
4+
}
5+
6+
fn test_main() {
7+
foo := unsafe { test() }
8+
assert foo.len == 5
9+
assert foo == unsafe { test() }
10+
}

0 commit comments

Comments
 (0)