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
7package main
8
9var m = map[int]int{0: 0, 1: 0}
10var nf = 0
11var i int
12
13func multi() (int, int) { return 1, 2 }
14
15func 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
31func f() map[int]int {
32	nf++
33	return m
34}
35
36func g() *int {
37	nf++
38	return &i
39}
40
41func 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}
51