gc: another shift bug

Fixes #1316.

R=ken2
CC=golang-dev
https://golang.org/cl/3575042
This commit is contained in:
Russ Cox 2010-12-13 13:42:51 -05:00
parent 9da73612ed
commit 603f9feeec
2 changed files with 7 additions and 1 deletions

View file

@ -101,7 +101,7 @@ convlit1(Node **np, Type *t, int explicit)
break;
case OLSH:
case ORSH:
convlit1(&n->left, t, explicit);
convlit1(&n->left, t, explicit && isideal(n->left->type));
t = n->left->type;
if(t != T && !isint[t->etype]) {
yyerror("invalid operation: %#N (shift of type %T)", n, t);

View file

@ -26,4 +26,10 @@ func main() {
println("type info didn't propagate in const: got", s)
panic("fail")
}
x := uint(5)
y := float64(uint64(1)<<x) // used to fail to compile
if y != 32 {
println("wrong y", y)
panic("fail")
}
}