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 7// function call arg reordering was picking out 1 call that 8// didn't need to be in a temporary, but it was picking 9// out the first call instead of the last call. 10// https://golang.org/issue/370 11 12package main 13 14var gen = 'a' 15 16func f(n int) string { 17 s := string(gen) + string(n+'A'-1) 18 gen++ 19 return s 20} 21 22func g(x, y string) string { 23 return x + y 24} 25 26func main() { 27 s := f(1) + f(2) 28 if s != "aAbB" { 29 println("BUG: bug221a: ", s) 30 panic("fail") 31 } 32 s = g(f(3), f(4)) 33 if s != "cCdD" { 34 println("BUG: bug221b: ", s) 35 panic("fail") 36 } 37 s = f(5) + f(6) + f(7) + f(8) + f(9) 38 if s != "eEfFgGhHiI" { 39 println("BUG: bug221c: ", s) 40 panic("fail") 41 } 42} 43