Skip to content

Commit ad1ef6a

Browse files
authored
cgen: fix map get assign blank var with optional (#12943)
1 parent b88a40a commit ad1ef6a

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

vlib/v/gen/c/assign.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ fn (mut g Gen) gen_assign_stmt(node ast.AssignStmt) {
197197
if val is ast.IndexExpr {
198198
g.assign_op = .decl_assign
199199
}
200+
g.is_assign_lhs = false
200201
if is_call {
201202
old_is_void_expr_stmt := g.is_void_expr_stmt
202203
g.is_void_expr_stmt = true
@@ -209,7 +210,6 @@ fn (mut g Gen) gen_assign_stmt(node ast.AssignStmt) {
209210
g.expr(val)
210211
g.writeln(';}')
211212
}
212-
g.is_assign_lhs = false
213213
} else if node.op == .assign
214214
&& (is_fixed_array_init || (right_sym.kind == .array_fixed && val is ast.Ident)) {
215215
mut v_var := ''

vlib/v/tests/map_get_assign_blank_test.v

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,16 @@ fn test_map_get_assign_blank() {
1717
}
1818
assert true
1919
}
20+
21+
fn get_value() int {
22+
mut m := map[string]int{}
23+
_ := m['a'] or { return 1 }
24+
println('a')
25+
return 0
26+
}
27+
28+
fn test_map_get_assign_blank_with_or_expr() {
29+
ret := get_value()
30+
println(ret)
31+
assert ret == 1
32+
}

0 commit comments

Comments
 (0)