mirror of
https://github.com/golang/go
synced 2024-11-24 18:10:02 -07:00
gc: implement new shift rules
The change is that 1.0<<2 is now okay. R=ken2 CC=golang-dev https://golang.org/cl/4524084
This commit is contained in:
parent
9b82408f6d
commit
5ab096d030
@ -103,6 +103,8 @@ convlit1(Node **np, Type *t, int explicit)
|
||||
case ORSH:
|
||||
convlit1(&n->left, t, explicit && isideal(n->left->type));
|
||||
t = n->left->type;
|
||||
if(t != T && t->etype == TIDEAL && n->val.ctype != CTINT)
|
||||
n->val = toint(n->val);
|
||||
if(t != T && !isint[t->etype]) {
|
||||
yyerror("invalid operation: %#N (shift of type %T)", n, t);
|
||||
t = T;
|
||||
@ -514,6 +516,8 @@ evconst(Node *n)
|
||||
n->right = nr;
|
||||
if(nr->type && (issigned[nr->type->etype] || !isint[nr->type->etype]))
|
||||
goto illegal;
|
||||
nl->val = toint(nl->val);
|
||||
nr->val = toint(nr->val);
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -40,21 +40,6 @@ hello, world
|
||||
-9223372036854775808
|
||||
9223372036854775807
|
||||
|
||||
=========== ./shift1.go
|
||||
BUG: errchk: ./shift1.go:33: error message does not match 'overflow'
|
||||
errchk: ./shift1.go:34: error message does not match 'overflow'
|
||||
errchk: ./shift1.go:35: error message does not match 'overflow'
|
||||
|
||||
=========== ./shift2.go
|
||||
./shift2.go:22: illegal constant expression: ideal LSH uint
|
||||
./shift2.go:35: illegal constant expression: ideal LSH uint
|
||||
./shift2.go:36: illegal constant expression: ideal LSH uint
|
||||
./shift2.go:36: invalid operation: 2 << c (shift of type float64)
|
||||
./shift2.go:39: illegal constant expression: ideal LSH uint
|
||||
./shift2.go:40: illegal constant expression: ideal LSH uint
|
||||
./shift2.go:40: invalid operation: 2 << c (shift of type float64)
|
||||
./shift2.go:40: cannot use 2 << c as type interface { } in function argument
|
||||
|
||||
=========== ./sigchld.go
|
||||
survived SIGCHLD
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
// $G $D/$F.go && $L $F.$A && ./$A.out
|
||||
// $G $D/$F.go || echo BUG: shift2
|
||||
|
||||
// Copyright 2011 The Go Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style
|
||||
|
Loading…
Reference in New Issue
Block a user