// 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) | |
} | |
} |