// run // Copyright 2011 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. package main type T1 struct { Next *T2 } type T2 T1 type T3 struct { Next *T4 } type T4 T5 type T5 T6 type T6 T7 type T7 T8 type T8 T9 type T9 T3 type T10 struct { x struct { y ***struct { z *struct { Next *T11 } } } } type T11 T10 type T12 struct { F1 *T15 F2 *T13 F3 *T16 } type T13 T14 type T14 T15 type T15 T16 type T16 T17 type T17 T12 // issue 1672 type T18 *[10]T19 type T19 T18 func main() { _ = &T1{&T2{}} _ = &T2{&T2{}} _ = &T3{&T4{}} _ = &T4{&T4{}} _ = &T5{&T4{}} _ = &T6{&T4{}} _ = &T7{&T4{}} _ = &T8{&T4{}} _ = &T9{&T4{}} _ = &T12{&T15{}, &T13{}, &T16{}} var ( tn struct{ Next *T11 } tz struct{ z *struct{ Next *T11 } } tpz *struct{ z *struct{ Next *T11 } } tppz **struct{ z *struct{ Next *T11 } } tpppz ***struct{ z *struct{ Next *T11 } } ty struct { y ***struct{ z *struct{ Next *T11 } } } ) tn.Next = &T11{} tz.z = &tn tpz = &tz tppz = &tpz tpppz = &tppz ty.y = tpppz _ = &T10{ty} t19s := &[10]T19{} _ = T18(t19s) }