// V must implement T (methods)
// - check only if we have methods
if Ti.NumMethods() > 0 {
- // If the type argument is a pointer to a type parameter, the type argument's
- // method set is empty.
- // TODO(gri) is this what we want? (spec question)
- if base, isPtr := deref(V); isPtr && isTypeParam(base) {
- return errorf("%s has no methods", V)
- }
if m, wrong := check.missingMethod(V, Ti, true); m != nil {
// TODO(gri) needs to print updated name to avoid major confusion in error message!
// (print warning for now)
typ, isPtr := deref(T)
- // *typ where typ is an interface or type parameter has no methods.
+ // *typ where typ is an interface has no methods.
if isPtr {
- // don't look at under(typ) here - was bug (issue #47747)
- if _, ok := typ.(*TypeParam); ok {
- return
- }
if _, ok := under(typ).(*Interface); ok {
return
}