From 4fd877ca26b185fad6cee453e9ecf73e063647a1 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 21 Aug 2009 17:54:07 -0700 Subject: fix crash in bug194; add bug196 R=ken OCL=33694 CL=33697 --- test/bugs/bug196.go | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ test/golden.out | 7 ++++++- 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100644 test/bugs/bug196.go (limited to 'test') diff --git a/test/bugs/bug196.go b/test/bugs/bug196.go new file mode 100644 index 000000000..0aa055010 --- /dev/null +++ b/test/bugs/bug196.go @@ -0,0 +1,49 @@ +// $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); + } + +} diff --git a/test/golden.out b/test/golden.out index 207313f59..2ccd4cf05 100644 --- a/test/golden.out +++ b/test/golden.out @@ -175,8 +175,13 @@ bugs/bug193.go:13: fatal error: optoas: no entry LSH-float 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 -- cgit v1.2.1