// Package generics contains the new syntax supporting generic ... PACKAGE generics IMPORTPATH testdata/generics FILENAMES testdata/generics.go FUNCTIONS // AnotherFunc has an implicit constraint interface. Neither type ... func AnotherFunc[T ~struct{ f int }](_ struct{ f int }) // Func has an instantiated constraint. func Func[T Constraint[string, Type[int]]]() // Single is not a factory function. func Single[T any]() *T // Slice is not a factory function. func Slice[T any]() []T TYPES // AFuncType demonstrates filtering of parameters and type ... type AFuncType[T ~struct{ f int }] func(_ struct{ f int }) // Constraint is a constraint interface with two type parameters. type Constraint[P, Q interface{ string | ~int | Type[int] }] interface { ~int | ~byte | Type[string] M() P } // NewEmbeddings demonstrates how we filter the new embedded ... type NewEmbeddings interface { string // should not be filtered int16 struct{ f int } ~struct{ f int } *struct{ f int } struct{ f int } | ~struct{ f int } } // Parameterized types should be shown. type Type[P any] struct { Field P } // Variables with an instantiated type should be shown. var X Type[int] // Constructors for parameterized types should be shown. func Constructor[lowerCase any]() Type[lowerCase] // MethodA uses a different name for its receiver type parameter. func (t Type[A]) MethodA(p A) // MethodB has a blank receiver type parameter. func (t Type[_]) MethodB() // MethodC has a lower-case receiver type parameter. func (t Type[c]) MethodC() // int16 shadows the predeclared type int16. type int16 int