int
smallintconst(Node *n)
{
- if(n->op == OLITERAL)
+ if(n->op == OLITERAL && n->type != T)
switch(simtype[n->type->etype]) {
case TINT8:
case TUINT8:
long
nonnegconst(Node *n)
{
- if(n->op == OLITERAL)
+ if(n->op == OLITERAL && n->type != T)
switch(simtype[n->type->etype]) {
case TINT8:
case TUINT8:
--- /dev/null
+// $G $D/$F.go && $L $F.$A && ./$A.out || echo BUG: bug196
+
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package main
+
+var m = map[int]int{ 0: 0, 1: 0 }
+var nf = 0
+var i int
+
+func multi() (int, int) {
+ return 1,2
+}
+
+func xxx() {
+ var c chan int;
+ x, ok := <-c;
+
+ var m map[int]int;
+ x, ok = m[1];
+
+ var i interface{};
+ var xx int;
+ xx, ok = i.(int);
+
+ a,b := multi();
+}
+
+func f() map[int]int {
+ nf++;
+ return m;
+}
+
+func g() *int {
+ nf++;
+ return &i
+}
+
+func main() {
+ f()[0]++;
+ f()[1] += 2;
+ *g() %= 2;
+ if nf != 3 {
+ panicln("too many calls:", nf);
+ }
+
+}
errchk: bugs/bug193.go:14: missing expected error: 'shift'
=========== bugs/bug194.go
+bugs/bug194.go:15: array index must be non-negative integer constant
BUG should compile and run
-$RUNFILE: line 1: PID Segmentation fault (core dumped) $G $D/$F.go
=========== bugs/bug195.go
bugs/bug195.go:9: BUG: errchk: compiler crashed
+
+=========== bugs/bug196.go
+too many calls: 5
+panic PC=xxx
+BUG: bug196