]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile/internal/types: adjust some error messages to match...
authorRobert Griesemer <gri@golang.org>
Wed, 2 Dec 2020 01:37:12 +0000 (17:37 -0800)
committerRobert Griesemer <gri@golang.org>
Thu, 3 Dec 2020 16:32:49 +0000 (16:32 +0000)
Change-Id: I04bd7b294de4ed0fb01bc0609e09debea2d797bd
Reviewed-on: https://go-review.googlesource.com/c/go/+/274974
Trust: Robert Griesemer <gri@golang.org>
Run-TryBot: Robert Griesemer <gri@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/types2/expr.go
src/cmd/compile/internal/types2/stmt.go
src/cmd/compile/internal/types2/typexpr.go

index 3c9540783af4212737cb132058aa1442a07ecb1f..c68077547e77b484d1dc9993821ffba38f67753c 100644 (file)
@@ -1867,7 +1867,11 @@ func (check *Checker) typeAssertion(pos syntax.Pos, x *operand, xtyp *Interface,
        } else {
                msg = "missing method " + method.name
        }
-       check.errorf(pos, "%s cannot have dynamic type %s (%s)", x, T, msg)
+       if check.conf.CompilerErrorMessages {
+               check.errorf(pos, "impossible type assertion: %s (%s)", x, msg)
+       } else {
+               check.errorf(pos, "%s cannot have dynamic type %s (%s)", x, T, msg)
+       }
 }
 
 // expr typechecks expression e and initializes x with the expression value.
index 11a9b8313f3c36dde70c9843fdcdb422ff135892..f1317fa0a31e09c5b0a177e0952b33f0369c5527 100644 (file)
@@ -886,7 +886,7 @@ func rangeKeyVal(typ Type, wantKey, wantVal bool) (Type, Type, string) {
        case *Chan:
                var msg string
                if typ.dir == SendOnly {
-                       msg = "send-only channel"
+                       msg = "receive from send-only channel"
                }
                return typ.elem, Typ[Invalid], msg
        case *Sum:
index 2d568b7e87ba08d20de83ab7953c0fe3847cb104..39bb3a6b146429237736d08674911d2e31b20bf0 100644 (file)
@@ -806,7 +806,11 @@ func (check *Checker) interfaceType(ityp *Interface, iface *syntax.InterfaceType
                        // of a type list (f.Name.Value == "type").
                        name := f.Name.Value
                        if name == "_" {
-                               check.errorf(f.Name, "invalid method name _")
+                               if check.conf.CompilerErrorMessages {
+                                       check.errorf(f.Name, "methods must have a unique non-blank name")
+                               } else {
+                                       check.errorf(f.Name, "invalid method name _")
+                               }
                                continue // ignore
                        }