gen: fix generating `$if expr || expr` (#9270)
parent
fecf4a6f58
commit
c06e58d418
|
@ -286,7 +286,7 @@ fn (mut g Gen) comp_if_cond(cond ast.Expr) bool {
|
||||||
l := g.comp_if_cond(cond.left)
|
l := g.comp_if_cond(cond.left)
|
||||||
g.write(' $cond.op ')
|
g.write(' $cond.op ')
|
||||||
r := g.comp_if_cond(cond.right)
|
r := g.comp_if_cond(cond.right)
|
||||||
return l && r
|
return if cond.op == .and { l && r } else { l || r }
|
||||||
}
|
}
|
||||||
.key_is, .not_is {
|
.key_is, .not_is {
|
||||||
left := cond.left
|
left := cond.left
|
||||||
|
|
|
@ -13,3 +13,17 @@ fn test_generic_is() {
|
||||||
assert f<int>() == 1
|
assert f<int>() == 1
|
||||||
assert f<bool>() == -1
|
assert f<bool>() == -1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn g<T>(t T) int {
|
||||||
|
$if T is byte || T is i8 {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
return 2
|
||||||
|
}
|
||||||
|
|
||||||
|
fn test_is_or() {
|
||||||
|
assert g(byte(1)) == 1
|
||||||
|
assert g(i8(1)) == 1
|
||||||
|
assert g(1) == 2
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue