| // run | |
| // Copyright 2016 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. | |
| // Exchanging two struct fields was compiled incorrectly. | |
| package main | |
| type S struct { | |
| i int | |
| } | |
| func F(c bool, s1, s2 S) (int, int) { | |
| if c { | |
| s1.i, s2.i = s2.i, s1.i | |
| } | |
| return s1.i, s2.i | |
| } | |
| func main() { | |
| i, j := F(true, S{1}, S{20}) | |
| if i != 20 || j != 1 { | |
| panic(i+j) | |
| } | |
| } |