// compile // 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] }