github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug196.go (about)

     1  // run
     2  
     3  // Copyright 2009 The Go Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  package main
     8  
     9  var m = map[int]int{0: 0, 1: 0}
    10  var nf = 0
    11  var i int
    12  
    13  func multi() (int, int) { return 1, 2 }
    14  
    15  func xxx() {
    16  	var c chan int
    17  	x, ok := <-c
    18  
    19  	var m map[int]int
    20  	x, ok = m[1]
    21  
    22  	var i interface{}
    23  	var xx int
    24  	xx, ok = i.(int)
    25  
    26  	a, b := multi()
    27  
    28  	_, _, _, _, _ = x, ok, xx, a, b
    29  }
    30  
    31  func f() map[int]int {
    32  	nf++
    33  	return m
    34  }
    35  
    36  func g() *int {
    37  	nf++
    38  	return &i
    39  }
    40  
    41  func main() {
    42  	f()[0]++
    43  	f()[1] += 2
    44  	*g() %= 2
    45  	if nf != 3 {
    46  		println("too many calls:", nf)
    47  		panic("fail")
    48  	}
    49  
    50  }