github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug221.go (about) 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 // http://code.google.com/p/go/issues/detail?id=370 11 12 package main 13 14 var gen = 'a' 15 16 func f(n int) string { 17 s := string(gen) + string(n+'A'-1) 18 gen++ 19 return s 20 } 21 22 func g(x, y string) string { 23 return x + y 24 } 25 26 func 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 }