// Copyright 2021 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 p // The example from the issue. type ( N[P any] M /* ERROR illegal cycle */ [P] M[P any] N /* ERROR illegal cycle */ [P] ) // A slightly more complicated case. type ( A[P any] B /* ERROR illegal cycle */ [P] B[P any] C[P] C[P any] A[P] ) // Confusing but valid (note that `type T *T` is valid). type ( N1[P any] *M1[P] M1[P any] *N1[P] )