summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgriesemer <gri@golang.org>2017-08-15 13:46:16 +0200
committerRobert Griesemer <gri@golang.org>2017-08-16 09:20:24 +0000
commitf6f125dd072ed16efdede5a28defe7d8c552a02c (patch)
treebfb280071132d79993772484b5c0bcb8ebacf586
parent53836a74f8b0137ebd52f0279edc16fc7d5cf2ca (diff)
downloadgo-git-f6f125dd072ed16efdede5a28defe7d8c552a02c.tar.gz
go/types: document that Signature.Recv() is ignored for type identity
Fixes #21367. Change-Id: I50704c5a613abcce57b340db8992c7bcb1cb728f Reviewed-on: https://go-review.googlesource.com/55710 Reviewed-by: Alan Donovan <adonovan@google.com>
-rw-r--r--src/go/types/predicates.go6
-rw-r--r--src/go/types/type.go3
2 files changed, 6 insertions, 3 deletions
diff --git a/src/go/types/predicates.go b/src/go/types/predicates.go
index c3b87dd9cd..3aa4878cce 100644
--- a/src/go/types/predicates.go
+++ b/src/go/types/predicates.go
@@ -110,12 +110,14 @@ func hasNil(typ Type) bool {
return false
}
-// Identical reports whether x and y are identical.
+// Identical reports whether x and y are identical types.
+// Receivers of Signature types are ignored.
func Identical(x, y Type) bool {
return identical(x, y, true, nil)
}
-// IdenticalIgnoreTags reports whether x and y are identical if tags are ignored.
+// IdenticalIgnoreTags reports whether x and y are identical types if tags are ignored.
+// Receivers of Signature types are ignored.
func IdenticalIgnoreTags(x, y Type) bool {
return identical(x, y, false, nil)
}
diff --git a/src/go/types/type.go b/src/go/types/type.go
index a0a1238395..065c79c505 100644
--- a/src/go/types/type.go
+++ b/src/go/types/type.go
@@ -191,6 +191,7 @@ func (t *Tuple) Len() int {
func (t *Tuple) At(i int) *Var { return t.vars[i] }
// A Signature represents a (non-builtin) function or method type.
+// The receiver is ignored when comparing signatures for identity.
type Signature struct {
// We need to keep the scope in Signature (rather than passing it around
// and store it in the Func Object) because when type-checking a function
@@ -221,7 +222,7 @@ func NewSignature(recv *Var, params, results *Tuple, variadic bool) *Signature {
}
// Recv returns the receiver of signature s (if a method), or nil if a
-// function.
+// function. It is ignored when comparing signatures for identity.
//
// For an abstract method, Recv returns the enclosing interface either
// as a *Named or an *Interface. Due to embedding, an interface may