// $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 {
		panicln("too many calls:", nf);
	}

}
