| // $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() |
| |
| _, _, _, _, _ = x, ok, xx, a, b |
| } |
| |
| 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 { |
| println("too many calls:", nf) |
| panic("fail") |
| } |
| |
| } |