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