// $G $D/$F.go && $L $F.$A && ./$A.out // Copyright 2010 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 import ( "os" "strconv" ) var trace string func f() string { trace += "f" return "abc" } func g() *os.Error { trace += "g" var x os.Error return &x } func h() string { trace += "h" return "123" } func i() *int { trace += "i" var i int return &i } func main() { m := make(map[string]int) m[f()], *g() = strconv.Atoi(h()) if m["abc"] != 123 || trace != "fgh" { panic("BUG", m["abc"], trace) } mm := make(map[string]os.Error) trace = "" mm["abc"] = os.EINVAL *i(), mm[f()] = strconv.Atoi(h()) if mm["abc"] != nil || trace != "ifh" { panic("BUG1", mm["abc"], trace) } }