diff --git a/src/cmd/gc/walk.c b/src/cmd/gc/walk.c index 211efaec94a..acccbec2c91 100644 --- a/src/cmd/gc/walk.c +++ b/src/cmd/gc/walk.c @@ -182,7 +182,7 @@ walkdef(Node *n) t = n->type; if(t != T) { convlit(&e, t); - if(!isint[t->etype] && !isfloat[t->etype] && t->etype != TSTRING) + if(!isint[t->etype] && !isfloat[t->etype] && t->etype != TSTRING && t->etype != TBOOL) yyerror("invalid constant type %T", t); } n->val = e->val; diff --git a/test/fixedbugs/bug238.go b/test/fixedbugs/bug238.go index 3ceacf51d7f..83054fbc0c1 100644 --- a/test/fixedbugs/bug238.go +++ b/test/fixedbugs/bug238.go @@ -15,5 +15,8 @@ const d chan int = 4 // ERROR "convert|wrong|incompatible" const e func() = 5 // ERROR "convert|wrong|incompatible" const f struct{} = 6 // ERROR "convert|wrong|incompatible" const g interface{} = 7 // ERROR "constant|wrong|incompatible" +const h bool = false +const i int = 2 +const j float = 5 func main() { println(a, b, c, d, e, f, g) }