1
0
mirror of https://github.com/golang/go synced 2024-11-25 05:07:56 -07:00

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; break;
case OLSH: case OLSH:
case ORSH: case ORSH:
convlit1(&n->left, t, explicit); convlit1(&n->left, t, explicit && isideal(n->left->type));
t = n->left->type; t = n->left->type;
if(t != T && !isint[t->etype]) { if(t != T && !isint[t->etype]) {
yyerror("invalid operation: %#N (shift of type %T)", n, t); 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) println("type info didn't propagate in const: got", s)
panic("fail") panic("fail")
} }
x := uint(5)
y := float64(uint64(1)<<x) // used to fail to compile
if y != 32 {
println("wrong y", y)
panic("fail")
}
} }