]> Cypherpunks.ru repositories - gostls13.git/commit
go/types, types2: always use missingMethodReason in checker.Implements
authorRobert Griesemer <gri@golang.org>
Fri, 4 Feb 2022 00:07:28 +0000 (16:07 -0800)
committerRobert Griesemer <gri@golang.org>
Fri, 4 Feb 2022 23:42:54 +0000 (23:42 +0000)
commitaadbfc30afe7be3bc8d90e8267e7c9ca2dff95f4
tree6e17ee1621a6812d5dc2322de6a614afdb916225
parentf1903fd4ecbf7a1e524bf71ddecb8650b9d2ea9f
go/types, types2: always use missingMethodReason in checker.Implements

Remove special case where we don't have a *Checker and always use
Checker.missingMethodReason in Checker.implements.

Look for zero methods rather than empty interface to exit early
from Checker.missingMethod, and remove the extra test in
Checker.implements.

With this change we get consistent and more detailed error messages
from all places where we do a form of the "implements" test.

To make this possible, allow for the receiver to be nil in
- Checker.sprintf
- Checker.missingMethodReason
- Checker.interfacePtrError
- Checker.funcString

Allowing Checker.sprintf with nil Checker permits further simplifying
in a couple of places.

Change-Id: I0ea7178c9efbcd4a25ded2a66e2b058db52dc4d4
Reviewed-on: https://go-review.googlesource.com/c/go/+/383054
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/types2/errors.go
src/cmd/compile/internal/types2/instantiate.go
src/cmd/compile/internal/types2/lookup.go
src/cmd/compile/internal/types2/testdata/check/issues.src
src/cmd/compile/internal/types2/testdata/fixedbugs/issue49579.go2
src/go/types/errors.go
src/go/types/instantiate.go
src/go/types/lookup.go
src/go/types/testdata/check/issues.src
src/go/types/testdata/fixedbugs/issue49579.go2