Home | History | Annotate | Download | only in fixedbugs
      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 
      9 package main
     10 
     11 type S struct {
     12 	i int
     13 }
     14 
     15 func 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 
     22 func main() {
     23 	i, j := F(true, S{1}, S{20})
     24 	if i != 20 || j != 1 {
     25 		panic(i+j)
     26 	}
     27 }
     28