1// run 2 3// Copyright 2016 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// Exchanging two struct fields was compiled incorrectly. 8 9package main 10 11type S struct { 12 i int 13} 14 15func F(c bool, s1, s2 S) (int, int) { 16 if c { 17 s1.i, s2.i = s2.i, s1.i 18 } 19 return s1.i, s2.i 20} 21 22func main() { 23 i, j := F(true, S{1}, S{20}) 24 if i != 20 || j != 1 { 25 panic(i+j) 26 } 27} 28