cgen: fix using brackets for match expression (#6768)
parent
0d8114e14d
commit
125650c986
|
@ -2820,12 +2820,17 @@ fn (mut g Gen) match_expr(node ast.MatchExpr) {
|
||||||
g.expr(node.cond)
|
g.expr(node.cond)
|
||||||
g.writeln(';')
|
g.writeln(';')
|
||||||
g.write(cur_line)
|
g.write(cur_line)
|
||||||
|
if is_expr {
|
||||||
|
// brackets needed otherwise '?' will apply to everything on the left
|
||||||
|
g.write('(')
|
||||||
|
}
|
||||||
if node.is_sum_type {
|
if node.is_sum_type {
|
||||||
g.match_expr_sumtype(node, is_expr, cond_var)
|
g.match_expr_sumtype(node, is_expr, cond_var)
|
||||||
} else {
|
} else {
|
||||||
g.match_expr_classic(node, is_expr, cond_var)
|
g.match_expr_classic(node, is_expr, cond_var)
|
||||||
}
|
}
|
||||||
if is_expr {
|
if is_expr {
|
||||||
|
g.write(')')
|
||||||
g.decrement_inside_ternary()
|
g.decrement_inside_ternary()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -222,3 +222,10 @@ fn test_match_sumtype_multiple_types() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn test_sub_expression() {
|
||||||
|
b := false && match 1 {0 {true} else {true}}
|
||||||
|
assert !b
|
||||||
|
c := true || match 1 {0 {false} else {false}}
|
||||||
|
assert c
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue