]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: document that Signature.Recv() is ignored for type identity
authorgriesemer <gri@golang.org>
Tue, 15 Aug 2017 11:46:16 +0000 (13:46 +0200)
committerRobert Griesemer <gri@golang.org>
Wed, 16 Aug 2017 09:20:24 +0000 (09:20 +0000)
Fixes #21367.

Change-Id: I50704c5a613abcce57b340db8992c7bcb1cb728f
Reviewed-on: https://go-review.googlesource.com/55710
Reviewed-by: Alan Donovan <adonovan@google.com>
src/go/types/predicates.go
src/go/types/type.go

index c3b87dd9cd42fa27388bb1a1150a8a36da0f6a1a..3aa4878cce25fbdfb147f1af29a621487460ceba 100644 (file)
@@ -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)
 }
index a0a12383953b2a236dfb9765293377dd8cecd55b..065c79c5054415a91c4192ea874d10b909a5213c 100644 (file)
@@ -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