github.com/go-asm/go@v1.21.1-0.20240213172139-40c5ead50c48/types/testdata/fixedbugs/issue49439.go (about)

     1  // Copyright 2021 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  package p
     6  
     7  import "unsafe"
     8  
     9  type T0 /* ERROR "invalid recursive type" */ [P T0[P]] struct{}
    10  
    11  type T1 /* ERROR "invalid recursive type" */ [P T2[P]] struct{}
    12  type T2[P T1[P]] struct{}
    13  
    14  type T3 /* ERROR "invalid recursive type" */ [P interface{ ~struct{ f T3[int] } }] struct{}
    15  
    16  // valid cycle in M
    17  type N[P M[P]] struct{}
    18  type M[Q any] struct { F *M[Q] }
    19  
    20  // "crazy" case
    21  type TC[P [unsafe.Sizeof(func() {
    22          type T [P [unsafe.Sizeof(func(){})]byte] struct{}
    23  })]byte] struct{}
    24  
    25  // test case from issue
    26  type X /* ERROR "invalid recursive type" */ [T any, PT X[T]] interface{}