// compile -G=1

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

// This file checks simple code using type parameters.

package smoketest

// type parameters for functions
func f1[P any]() {}
func f2[P1, P2 any, P3 any]() {}
func f3[P interface{}](x P, y T1[int]) {}

// function instantiations
var _ = f1[int]
var _ = f2[int, string, struct{}]
var _ = f3[bool]

// type parameters for types
type T1[P any] struct{}
type T2[P1, P2 any, P3 any] struct{}
type T3[P interface{}] interface{}

// type instantiations
type _ T1[int]
type _ T2[int, string, struct{}]
type _ T3[bool]

// methods
func (T1[P]) m1()           {}
func (T1[_]) m2()           {}
func (x T2[P1, P2, P3]) m() {}

// type lists
type _ interface {
	m1()
	m2()
	int | float32 | string
	m3()
}

// embedded instantiated types
type _ struct {
	f1, f2 int
	T1[int]
	T2[int, string, struct{}]
	T3[bool]
}

type _ interface {
	m1()
	m2()
	T3[bool]
}
