// if they're both ideal going in they better
// get the same type going out.
// force means must assign concrete (non-ideal) type.
-func defaultlit2(lp **Node, rp **Node, force int) {
+func defaultlit2(lp **Node, rp **Node, force bool) {
l := *lp
r := *rp
if l.Type == nil || r.Type == nil {
return
}
- if force == 0 {
+ if !force {
return
}
+
if l.Type.Etype == TBOOL {
Convlit(lp, Types[TBOOL])
Convlit(rp, Types[TBOOL])
}
// ideal mixed with non-ideal
- defaultlit2(&l, &r, 0)
+ defaultlit2(&l, &r, false)
n.Left = l
n.Right = r
}
if t.Etype != TIDEAL && !Eqtype(l.Type, r.Type) {
- defaultlit2(&l, &r, 1)
+ defaultlit2(&l, &r, true)
if n.Op == OASOP && n.Implicit {
Yyerror("invalid operation: %v (non-numeric type %v)", n, l.Type)
n.Type = nil
evconst(n)
t = idealbool
if n.Op != OLITERAL {
- defaultlit2(&l, &r, 1)
+ defaultlit2(&l, &r, true)
n.Left = l
n.Right = r
}
n.Type = nil
return
}
- defaultlit2(&l, &r, 0)
+ defaultlit2(&l, &r, false)
if l.Type == nil || r.Type == nil {
n.Type = nil
return