The following code
package p
type F = func(T)
type T interface {
m(F)
}
type t struct{}
func (t) m(F) {}
var _ T = &t{}
doesn't type-check:
y.go:13:11: cannot use &(t literal) (value of type *t) as T value in variable declaration: wrong type for method m
but the code is correct (replacing F with func(T) everywhere works).
The following code
doesn't type-check:
but the code is correct (replacing F with func(T) everywhere works).