cgen: fix match in map or expr (#10283)
parent
d39a55ac11
commit
9fc5b9dc54
|
@ -4037,7 +4037,8 @@ fn (mut g Gen) need_tmp_var_in_match(node ast.MatchExpr) bool {
|
||||||
if branch.stmts[0] is ast.ExprStmt {
|
if branch.stmts[0] is ast.ExprStmt {
|
||||||
stmt := branch.stmts[0] as ast.ExprStmt
|
stmt := branch.stmts[0] as ast.ExprStmt
|
||||||
if stmt.expr is ast.CallExpr || stmt.expr is ast.IfExpr
|
if stmt.expr is ast.CallExpr || stmt.expr is ast.IfExpr
|
||||||
|| stmt.expr is ast.MatchExpr {
|
|| stmt.expr is ast.MatchExpr || (stmt.expr is ast.IndexExpr
|
||||||
|
&& (stmt.expr as ast.IndexExpr).or_expr.kind != .absent) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
fn test_match_in_map_or_expr() {
|
||||||
|
a := 5
|
||||||
|
some_map := map{
|
||||||
|
3: '3'
|
||||||
|
4: '4'
|
||||||
|
}
|
||||||
|
something := match a {
|
||||||
|
7 { '7' }
|
||||||
|
6 { '6' }
|
||||||
|
5 { '5' }
|
||||||
|
else { some_map[a] or { a.str() } } // here is the error
|
||||||
|
}
|
||||||
|
println(something)
|
||||||
|
assert something == '5'
|
||||||
|
}
|
Loading…
Reference in New Issue