blob: 1139dfa008898291fcf085b39a5a01ed4403fa1b [file] [log] [blame]
Ian Lance Taylor373f1a92012-03-30 08:42:21 -07001// run
2
3// Copyright 2012 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// Test that initializing struct fields out of order still runs
8// functions in the right order. This failed with gccgo.
9
10package main
11
12type S struct {
13 i1, i2, i3 int
14}
15
16var G int
17
18func v(i int) int {
19 if i != G {
20 panic(i)
21 }
22 G = i + 1
23 return G
24}
25
26func F() S {
27 return S{
28 i1: v(0),
29 i3: v(1),
30 i2: v(2),
31 }
32}
33
34func main() {
35 s := F()
36 if s != (S{1, 3, 2}) {
37 panic(s)
38 }
39}