5 // Test of initialization order of package-level vars.
15 func next2() (x int, y int) {
21 func makeOrder() int {
22 _, _, _, _ = f, b, d, e
27 // Initialization constraints:
28 // - {f,b,c/d,e} < order (ref graph traversal)
29 // - order < {a} (lexical order)
30 // - b < c/d < e < f (lexical order)
31 // Solution: a b c/d e f
32 abcdef := [6]int{a, b, c, d, e, f}
33 if abcdef != [6]int{0, 1, 2, 3, 4, 5} {
38 var order = makeOrder()
40 var a, b = next(), next()
42 var e, f = next(), next()
44 // ------------------------------------------------------------------------
48 func create(x int, name string) int {
49 order2 = append(order2, name)
53 var C = create(B+1, "C")
54 var A, B = create(1, "A"), create(2, "B")
56 // Initialization order of package-level value specs.
58 x := fmt.Sprint(order2)
59 // Result varies by toolchain. This is a spec bug.
60 if x != "[B C A]" && // gc
61 x != "[A B C]" { // go/types