| // run | |
| // 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. | |
| // https://golang.org/issue/370 | |
| package main | |
| var gen = 'a' | |
| func f(n rune) 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") | |
| } | |
| } |