// $G $D/$F.go && $L $F.$A && ./$A.out // 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. // function call arg reordering was picking out 1 call that // didn't need to be in a temporary, but it was picking // out the first call instead of the last call. // http://code.google.com/p/go/issues/detail?id=370 package main var gen = 'a' func f(n int) string { s := string(gen) + string(n+'A'-1) gen++ return s } func g(x, y string) string { return x + y } func main() { s := f(1) + f(2) if s != "aAbB" { println("BUG: bug221a: ", s) panic("fail") } s = g(f(3), f(4)) if s != "cCdD" { println("BUG: bug221b: ", s) panic("fail") } s = f(5) + f(6) + f(7) + f(8) + f(9) if s != "eEfFgGhHiI" { println("BUG: bug221c: ", s) panic("fail") } }