// Copyright 2022 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

// correctness check: ensure that cycles through generic instantiations are detected
type T[P any] struct {
	_ P
}

type S /* ERROR invalid recursive type */ struct {
	_ T[S]
}

// simplified test 1

var _ A1[A1[string]]

type A1[P any] struct {
	_ B1[P]
}

type B1[P any] struct {
	_ P
}

// simplified test 2
var _ B2[A2]

type A2 struct {
	_ B2[string]
}

type B2[P any] struct {
	_ C2[P]
}

type C2[P any] struct {
	_ P
}

// test case from issue
type T23 interface {
	~struct {
		Field0 T13[T15]
	}
}

type T1[P1 interface {
}] struct {
	Field2 P1
}

type T13[P2 interface {
}] struct {
	Field2 T1[P2]
}

type T15 struct {
	Field0 T13[string]
}
