github.com/xushiwei/go@v0.0.0-20130601165731-2b9d83f45bc9/test/fixedbugs/bug159.go (about) 1 // run 2 3 // Copyright 2009 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 package main 8 9 import "os" 10 11 func main() { 12 ok := true; 13 var a, b, c, x, y, z int; 14 f := func() int { b--; return -b }; 15 16 // this fails on 6g: apparently it rewrites 17 // the list into 18 // z = f(); 19 // y = f(); 20 // x = f(); 21 // so that the values come out backward. 22 x, y, z = f(), f(), f(); 23 if x != 1 || y != 2 || z != 3 { 24 println("xyz: expected 1 2 3 got", x, y, z); 25 ok = false; 26 } 27 28 // this fails on 6g too. one of the function calls 29 // happens after assigning to b. 30 a, b, c = f(), f(), f(); 31 if a != 4 || b != 5 || c != 6 { 32 println("abc: expected 4 5 6 got", a, b, c); 33 ok = false; 34 } 35 36 if !ok { 37 os.Exit(1); 38 } 39 }