]> Cypherpunks repositories - gostls13.git/commitdiff
go/types: minor simplification in assignableTo (cleanup)
authorRobert Griesemer <gri@golang.org>
Thu, 18 Mar 2021 05:44:16 +0000 (22:44 -0700)
committerRobert Griesemer <gri@golang.org>
Thu, 18 Mar 2021 18:50:58 +0000 (18:50 +0000)
Also, clarify doc string.

Change-Id: If1c5f8e29e2c2080dd899ef76196e97b7b992389
Reviewed-on: https://go-review.googlesource.com/c/go/+/302758
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/go/types/operand.go

index 8344c059c43225452b06483ba3644cba7064d9a9..6463728cec6a37b9308fa8853663104deaa2ed90 100644 (file)
@@ -222,9 +222,10 @@ func (x *operand) isNil() bool {
 
 // assignableTo reports whether x is assignable to a variable of type T. If the
 // result is false and a non-nil reason is provided, it may be set to a more
-// detailed explanation of the failure (result != ""). The check parameter may
-// be nil if assignableTo is invoked through an exported API call, i.e., when
-// all methods have been type-checked.
+// detailed explanation of the failure (result != ""). The returned error code
+// is only valid if the (first) result is false. The check parameter may be nil
+// if assignableTo is invoked through an exported API call, i.e., when all
+// methods have been type-checked.
 func (x *operand) assignableTo(check *Checker, T Type, reason *string) (bool, errorCode) {
        if x.mode == invalid || T == Typ[Invalid] {
                return true, 0 // avoid spurious errors
@@ -285,11 +286,7 @@ func (x *operand) assignableTo(check *Checker, T Type, reason *string) (bool, er
        // and at least one of V or T is not a named type
        if Vc, ok := Vu.(*Chan); ok && Vc.dir == SendRecv {
                if Tc, ok := Tu.(*Chan); ok && check.identical(Vc.elem, Tc.elem) {
-                       if !isNamed(V) || !isNamed(T) {
-                               return true, 0
-                       } else {
-                               return false, _InvalidChanAssign
-                       }
+                       return !isNamed(V) || !isNamed(T), _InvalidChanAssign
                }
        }