|  | // 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) | 
|  | } |