1// Copyright 2014 The Go Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style
3// license that can be found in the LICENSE file.
4
5// initialization cycles
6
7package init2
8
9// cycles through functions
10
11func f1() int { _ = x1; return 0 }
12var x1 /* ERROR initialization cycle */ = f1
13
14func f2() int { _ = x2; return 0 }
15var x2 /* ERROR initialization cycle */ = f2()
16
17// cycles through method expressions
18
19type T3 int
20func (T3) m() int { _ = x3; return 0 }
21var x3 /* ERROR initialization cycle */ = T3.m
22
23type T4 int
24func (T4) m() int { _ = x4; return 0 }
25var x4 /* ERROR initialization cycle */ = T4.m(0)
26
27type T3p int
28func (*T3p) m() int { _ = x3p; return 0 }
29var x3p /* ERROR initialization cycle */ = (*T3p).m
30
31type T4p int
32func (*T4p) m() int { _ = x4p; return 0 }
33var x4p /* ERROR initialization cycle */ = (*T4p).m(nil)
34
35// cycles through method expressions of embedded methods
36
37type T5 struct { E5 }
38type E5 int
39func (E5) m() int { _ = x5; return 0 }
40var x5 /* ERROR initialization cycle */ = T5.m
41
42type T6 struct { E6 }
43type E6 int
44func (E6) m() int { _ = x6; return 0 }
45var x6 /* ERROR initialization cycle */ = T6.m(T6{0})
46
47type T5p struct { E5p }
48type E5p int
49func (*E5p) m() int { _ = x5p; return 0 }
50var x5p /* ERROR initialization cycle */ = (*T5p).m
51
52type T6p struct { E6p }
53type E6p int
54func (*E6p) m() int { _ = x6p; return 0 }
55var x6p /* ERROR initialization cycle */ = (*T6p).m(nil)
56
57// cycles through method values
58
59type T7 int
60func (T7) m() int { _ = x7; return 0 }
61var x7 /* ERROR initialization cycle */ = T7(0).m
62
63type T8 int
64func (T8) m() int { _ = x8; return 0 }
65var x8 /* ERROR initialization cycle */ = T8(0).m()
66
67type T7p int
68func (*T7p) m() int { _ = x7p; return 0 }
69var x7p /* ERROR initialization cycle */ = new(T7p).m
70
71type T8p int
72func (*T8p) m() int { _ = x8p; return 0 }
73var x8p /* ERROR initialization cycle */ = new(T8p).m()
74
75type T7v int
76func (T7v) m() int { _ = x7v; return 0 }
77var x7var T7v
78var x7v /* ERROR initialization cycle */ = x7var.m
79
80type T8v int
81func (T8v) m() int { _ = x8v; return 0 }
82var x8var T8v
83var x8v /* ERROR initialization cycle */ = x8var.m()
84
85type T7pv int
86func (*T7pv) m() int { _ = x7pv; return 0 }
87var x7pvar *T7pv
88var x7pv /* ERROR initialization cycle */ = x7pvar.m
89
90type T8pv int
91func (*T8pv) m() int { _ = x8pv; return 0 }
92var x8pvar *T8pv
93var x8pv /* ERROR initialization cycle */ = x8pvar.m()
94
95// cycles through method values of embedded methods
96
97type T9 struct { E9 }
98type E9 int
99func (E9) m() int { _ = x9; return 0 }
100var x9 /* ERROR initialization cycle */ = T9{0}.m
101
102type T10 struct { E10 }
103type E10 int
104func (E10) m() int { _ = x10; return 0 }
105var x10 /* ERROR initialization cycle */ = T10{0}.m()
106
107type T9p struct { E9p }
108type E9p int
109func (*E9p) m() int { _ = x9p; return 0 }
110var x9p /* ERROR initialization cycle */ = new(T9p).m
111
112type T10p struct { E10p }
113type E10p int
114func (*E10p) m() int { _ = x10p; return 0 }
115var x10p /* ERROR initialization cycle */ = new(T10p).m()
116
117type T9v struct { E9v }
118type E9v int
119func (E9v) m() int { _ = x9v; return 0 }
120var x9var T9v
121var x9v /* ERROR initialization cycle */ = x9var.m
122
123type T10v struct { E10v }
124type E10v int
125func (E10v) m() int { _ = x10v; return 0 }
126var x10var T10v
127var x10v /* ERROR initialization cycle */ = x10var.m()
128
129type T9pv struct { E9pv }
130type E9pv int
131func (*E9pv) m() int { _ = x9pv; return 0 }
132var x9pvar *T9pv
133var x9pv /* ERROR initialization cycle */ = x9pvar.m
134
135type T10pv struct { E10pv }
136type E10pv int
137func (*E10pv) m() int { _ = x10pv; return 0 }
138var x10pvar *T10pv
139var x10pv /* ERROR initialization cycle */ = x10pvar.m()
140