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