// $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" { | |
println("BUG", m["abc"], trace) | |
panic("fail") | |
} | |
mm := make(map[string]os.Error) | |
trace = "" | |
mm["abc"] = os.EINVAL | |
*i(), mm[f()] = strconv.Atoi(h()) | |
if mm["abc"] != nil || trace != "ifh" { | |
println("BUG1", mm["abc"], trace) | |
panic("fail") | |
} | |
} |