// Copyright 2020 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.

// Check "infinite expansion" cycle errors across instantiated types.
// We can't detect these errors anymore at the moment. See #48962 for
// details.

package p

type E0[P any] P
type E1[P any] *P
type E2[P any] struct{ _ P }
type E3[P any] struct{ _ *P }

type T0 /* illegal cycle */ struct {
        _ E0[T0]
}

type T0_ /* illegal cycle */ struct {
        E0[T0_]
}

type T1 struct {
        _ E1[T1]
}

type T2 /* illegal cycle */ struct {
        _ E2[T2]
}

type T3 struct {
        _ E3[T3]
}

// some more complex cases

type T4 /* illegal cycle */ struct {
	_ E0[E2[T4]]
}

type T5 struct {
	_ E0[E2[E0[E1[E2[[10]T5]]]]]
}

type T6 /* illegal cycle */ struct {
	_ E0[[10]E2[E0[E2[E2[T6]]]]]
}

type T7 struct {
	_ E0[[]E2[E0[E2[E2[T6]]]]]
}
