| // Copyright 2014 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // initialization cycles |
| |
| package init2 |
| |
| // cycles through functions |
| |
| func f1() int { _ = x1; return 0 } |
| var x1 /* ERROR initialization cycle */ = f1 |
| |
| func f2() int { _ = x2; return 0 } |
| var x2 /* ERROR initialization cycle */ = f2() |
| |
| // cycles through method expressions |
| |
| type T3 int |
| func (T3) m() int { _ = x3; return 0 } |
| var x3 /* ERROR initialization cycle */ = T3.m |
| |
| type T4 int |
| func (T4) m() int { _ = x4; return 0 } |
| var x4 /* ERROR initialization cycle */ = T4.m(0) |
| |
| type T3p int |
| func (*T3p) m() int { _ = x3p; return 0 } |
| var x3p /* ERROR initialization cycle */ = (*T3p).m |
| |
| type T4p int |
| func (*T4p) m() int { _ = x4p; return 0 } |
| var x4p /* ERROR initialization cycle */ = (*T4p).m(nil) |
| |
| // cycles through method expressions of embedded methods |
| |
| type T5 struct { E5 } |
| type E5 int |
| func (E5) m() int { _ = x5; return 0 } |
| var x5 /* ERROR initialization cycle */ = T5.m |
| |
| type T6 struct { E6 } |
| type E6 int |
| func (E6) m() int { _ = x6; return 0 } |
| var x6 /* ERROR initialization cycle */ = T6.m(T6{0}) |
| |
| type T5p struct { E5p } |
| type E5p int |
| func (*E5p) m() int { _ = x5p; return 0 } |
| var x5p /* ERROR initialization cycle */ = (*T5p).m |
| |
| type T6p struct { E6p } |
| type E6p int |
| func (*E6p) m() int { _ = x6p; return 0 } |
| var x6p /* ERROR initialization cycle */ = (*T6p).m(nil) |
| |
| // cycles through method values |
| |
| type T7 int |
| func (T7) m() int { _ = x7; return 0 } |
| var x7 /* ERROR initialization cycle */ = T7(0).m |
| |
| type T8 int |
| func (T8) m() int { _ = x8; return 0 } |
| var x8 /* ERROR initialization cycle */ = T8(0).m() |
| |
| type T7p int |
| func (*T7p) m() int { _ = x7p; return 0 } |
| var x7p /* ERROR initialization cycle */ = new(T7p).m |
| |
| type T8p int |
| func (*T8p) m() int { _ = x8p; return 0 } |
| var x8p /* ERROR initialization cycle */ = new(T8p).m() |
| |
| type T7v int |
| func (T7v) m() int { _ = x7v; return 0 } |
| var x7var T7v |
| var x7v /* ERROR initialization cycle */ = x7var.m |
| |
| type T8v int |
| func (T8v) m() int { _ = x8v; return 0 } |
| var x8var T8v |
| var x8v /* ERROR initialization cycle */ = x8var.m() |
| |
| type T7pv int |
| func (*T7pv) m() int { _ = x7pv; return 0 } |
| var x7pvar *T7pv |
| var x7pv /* ERROR initialization cycle */ = x7pvar.m |
| |
| type T8pv int |
| func (*T8pv) m() int { _ = x8pv; return 0 } |
| var x8pvar *T8pv |
| var x8pv /* ERROR initialization cycle */ = x8pvar.m() |
| |
| // cycles through method values of embedded methods |
| |
| type T9 struct { E9 } |
| type E9 int |
| func (E9) m() int { _ = x9; return 0 } |
| var x9 /* ERROR initialization cycle */ = T9{0}.m |
| |
| type T10 struct { E10 } |
| type E10 int |
| func (E10) m() int { _ = x10; return 0 } |
| var x10 /* ERROR initialization cycle */ = T10{0}.m() |
| |
| type T9p struct { E9p } |
| type E9p int |
| func (*E9p) m() int { _ = x9p; return 0 } |
| var x9p /* ERROR initialization cycle */ = new(T9p).m |
| |
| type T10p struct { E10p } |
| type E10p int |
| func (*E10p) m() int { _ = x10p; return 0 } |
| var x10p /* ERROR initialization cycle */ = new(T10p).m() |
| |
| type T9v struct { E9v } |
| type E9v int |
| func (E9v) m() int { _ = x9v; return 0 } |
| var x9var T9v |
| var x9v /* ERROR initialization cycle */ = x9var.m |
| |
| type T10v struct { E10v } |
| type E10v int |
| func (E10v) m() int { _ = x10v; return 0 } |
| var x10var T10v |
| var x10v /* ERROR initialization cycle */ = x10var.m() |
| |
| type T9pv struct { E9pv } |
| type E9pv int |
| func (*E9pv) m() int { _ = x9pv; return 0 } |
| var x9pvar *T9pv |
| var x9pv /* ERROR initialization cycle */ = x9pvar.m |
| |
| type T10pv struct { E10pv } |
| type E10pv int |
| func (*E10pv) m() int { _ = x10pv; return 0 } |
| var x10pvar *T10pv |
| var x10pv /* ERROR initialization cycle */ = x10pvar.m() |