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

package generics

func _[A, B any](a A, b B) int	{}
func _[T any](x, y T) T

type T[P any] struct{}
type T[P1, P2, P3 any] struct{}

type T[P C] struct{}
type T[P1, P2, P3 C] struct{}

type T[P C[P]] struct{}
type T[P1, P2, P3 C[P1, P2, P3]] struct{}

func f[P any](x P)
func f[P1, P2, P3 any](x1 P1, x2 P2, x3 P3) struct{}

func f[P interface{}](x P)
func f[P1, P2, P3 interface {
	m1(P1)
	type P2, P3
}](x1 P1, x2 P2, x3 P3) struct{}
func f[P any](T1[P], T2[P]) T3[P]

func (x T[P]) m()
func (T[P]) m(x T[P]) P

func _() {
	type _ []T[P]
	var _ []T[P]
	_ = []T[P]{}
}

// properly format one-line type lists
// TODO(rfindley): remove support for type lists
type _ interface{ type a }

type _ interface {
	type a, b, c
}

// type constraint literals with elided interfaces
func _[P ~int, Q int | string]()	{}
func _[P struct{ f int }, Q *P]()	{}
