]> Cypherpunks repositories - gostls13.git/commitdiff
[dev.typeparams] cmd/compile/internal/types2: cleanup panic calls
authorRobert Griesemer <gri@golang.org>
Wed, 4 Aug 2021 19:57:23 +0000 (12:57 -0700)
committerRobert Griesemer <gri@golang.org>
Thu, 5 Aug 2021 19:37:01 +0000 (19:37 +0000)
End-users are not expected to deal with the details of panics,
so providing extra information such as an "internal error" prefix
or the name of the function invoking the panic are not helpful.

Remove unnecessary panic verbiage if it is readily available from
a stack trace (such as the function where it happens, and the fact
that is is an "internal error").

Change-Id: I5f86bae6d2cca7c04ce692d17257da7ddee206d7
Reviewed-on: https://go-review.googlesource.com/c/go/+/339969
Trust: Robert Griesemer <gri@golang.org>
Reviewed-by: Robert Findley <rfindley@google.com>
src/cmd/compile/internal/types2/decl.go
src/cmd/compile/internal/types2/errors.go
src/cmd/compile/internal/types2/lookup.go
src/cmd/compile/internal/types2/named.go
src/cmd/compile/internal/types2/signature.go
src/cmd/compile/internal/types2/stmt.go
src/cmd/compile/internal/types2/typeparam.go
src/cmd/compile/internal/types2/typeset.go
src/cmd/compile/internal/types2/typestring.go
src/cmd/compile/internal/types2/union.go
src/cmd/compile/internal/types2/universe.go

index cf4d4c95a7ec33c52202152b7da068f3555390fe..bb33c287f32bb2dc2a5007eae5910ef02b6b4736 100644 (file)
@@ -340,7 +340,7 @@ func (check *Checker) validType(typ Type, path []Object) typeInfo {
                        // cycle detected
                        for i, tn := range path {
                                if t.obj.pkg != check.pkg {
-                                       panic("internal error: type cycle via package-external type")
+                                       panic("type cycle via package-external type")
                                }
                                if tn == t.obj {
                                        check.cycleError(path[i:])
@@ -348,7 +348,7 @@ func (check *Checker) validType(typ Type, path []Object) typeInfo {
                                        return t.info
                                }
                        }
-                       panic("internal error: cycle start not found")
+                       panic("cycle start not found")
                }
                return t.info
        }
index 8c5e185f6cb958596f9af28080dac9faace7c8af..a68273271b7434493f60ad45609e12b8f18b2070 100644 (file)
@@ -88,7 +88,7 @@ func sprintf(qf Qualifier, format string, args ...interface{}) string {
                case nil:
                        arg = "<nil>"
                case operand:
-                       panic("internal error: should always pass *operand")
+                       panic("got operand instead of *operand")
                case *operand:
                        arg = operandString(a, qf)
                case syntax.Pos:
@@ -148,7 +148,7 @@ func (check *Checker) sprintf(format string, args ...interface{}) string {
 
 func (check *Checker) report(err *error_) {
        if err.empty() {
-               panic("internal error: reporting no error")
+               panic("no error to report")
        }
        check.err(err.pos(), err.msg(check.qualifier), err.soft)
 }
index f62c3771d28b42c82d095de3ef4790a2c4d9ad7a..0363008ad9a0d5e73f9321e42c84b7a8470cb475 100644 (file)
@@ -322,7 +322,7 @@ func (check *Checker) missingMethod(V Type, T *Interface, static bool) (method,
                                return m, f
                        }
                        if !acceptMethodTypeParams && ftyp.TParams().Len() > 0 {
-                               panic("internal error: method with type parameters")
+                               panic("method with type parameters")
                        }
 
                        // If the methods have type parameters we don't care whether they
@@ -374,7 +374,7 @@ func (check *Checker) missingMethod(V Type, T *Interface, static bool) (method,
                        return m, f
                }
                if !acceptMethodTypeParams && ftyp.TParams().Len() > 0 {
-                       panic("internal error: method with type parameters")
+                       panic("method with type parameters")
                }
 
                // If V is a (instantiated) generic type, its methods are still
index 8ded197df5b08f771aefb301e2d1b66e717ab1cb..14e073bfaeb39056c916067ac2e678ccb0ccb969 100644 (file)
@@ -33,7 +33,7 @@ type Named struct {
 // The underlying type must not be a *Named.
 func NewNamed(obj *TypeName, underlying Type, methods []*Func) *Named {
        if _, ok := underlying.(*Named); ok {
-               panic("types2.NewNamed: underlying type must not be *Named")
+               panic("underlying type must not be *Named")
        }
        return (*Checker)(nil).newNamed(obj, nil, underlying, nil, methods)
 }
@@ -100,7 +100,7 @@ func (check *Checker) newNamed(obj *TypeName, orig *Named, underlying Type, tpar
                check.later(func() {
                        switch typ.under().(type) {
                        case *Named:
-                               panic("internal error: unexpanded underlying type")
+                               panic("unexpanded underlying type")
                        }
                        typ.check = nil
                })
@@ -140,10 +140,10 @@ func (t *Named) Method(i int) *Func { return t.load().methods[i] }
 // SetUnderlying sets the underlying type and marks t as complete.
 func (t *Named) SetUnderlying(underlying Type) {
        if underlying == nil {
-               panic("types2.Named.SetUnderlying: underlying type must not be nil")
+               panic("underlying type must not be nil")
        }
        if _, ok := underlying.(*Named); ok {
-               panic("types2.Named.SetUnderlying: underlying type must not be *Named")
+               panic("underlying type must not be *Named")
        }
        t.load().underlying = underlying
 }
@@ -191,7 +191,7 @@ func (n0 *Named) under() Type {
        }
 
        if n0.check == nil {
-               panic("internal error: Named.check == nil but type is incomplete")
+               panic("Named.check == nil but type is incomplete")
        }
 
        // Invariant: after this point n0 as well as any named types in its
@@ -242,7 +242,7 @@ func (n0 *Named) under() Type {
                // Also, doing so would lead to a race condition (was issue #31749).
                // Do this check always, not just in debug mode (it's cheap).
                if n.obj.pkg != check.pkg {
-                       panic("internal error: imported type with unresolved underlying type")
+                       panic("imported type with unresolved underlying type")
                }
                n.underlying = u
        }
index 832f37a6af4e467b686d21bc93bc180c60c00e29..14112462e18e14aaca84f935cb3706be5c346eb6 100644 (file)
@@ -36,10 +36,10 @@ func NewSignature(recv *Var, params, results *Tuple, variadic bool) *Signature {
        if variadic {
                n := params.Len()
                if n == 0 {
-                       panic("types2.NewSignature: variadic function must have at least one parameter")
+                       panic("variadic function must have at least one parameter")
                }
                if _, ok := params.At(n - 1).typ.(*Slice); !ok {
-                       panic("types2.NewSignature: variadic parameter must be of unnamed slice type")
+                       panic("variadic parameter must be of unnamed slice type")
                }
        }
        return &Signature{recv: recv, params: params, results: results, variadic: variadic}
index 1efce511f1c6f9b74e7b237ac0b3d9f2544e378c..ad8efa91f86f05b38d102b23ab265c4f5ec94623 100644 (file)
@@ -14,7 +14,7 @@ import (
 
 func (check *Checker) funcBody(decl *declInfo, name string, sig *Signature, body *syntax.BlockStmt, iota constant.Value) {
        if check.conf.IgnoreFuncBodies {
-               panic("internal error: function body not ignored")
+               panic("function body not ignored")
        }
 
        if check.conf.Trace {
index 27e6e355883385adfae47159529ac3afbdc1e5f4..12513ed6dda5c59a182b3e024e53d0d819174b5e 100644 (file)
@@ -75,7 +75,7 @@ func (t *TypeParam) Constraint() Type {
 // SetConstraint sets the type constraint for t.
 func (t *TypeParam) SetConstraint(bound Type) {
        if bound == nil {
-               panic("types2.TypeParam.SetConstraint: bound must not be nil")
+               panic("nil constraint")
        }
        t.bound = bound
 }
@@ -118,7 +118,7 @@ func bindTParams(list []*TypeName) *TypeParams {
        for i, tp := range list {
                typ := tp.Type().(*TypeParam)
                if typ.index >= 0 {
-                       panic("internal error: type parameter bound more than once")
+                       panic("type parameter bound more than once")
                }
                typ.index = i
        }
index 6e19115ff59e67842676249d9cf1965b73a53cdf..c5fcb97ff9d2f17bb9480ab949380bd6ae77214c 100644 (file)
@@ -323,10 +323,10 @@ func sortMethods(list []*Func) {
 
 func assertSortedMethods(list []*Func) {
        if !debug {
-               panic("internal error: assertSortedMethods called outside debug mode")
+               panic("assertSortedMethods called outside debug mode")
        }
        if !sort.IsSorted(byUniqueMethodName(list)) {
-               panic("internal error: methods not sorted")
+               panic("methods not sorted")
        }
 }
 
index 628eeaf3ddab2c01cd8bcbef80773c45584d62f6..b3675424a5bb7a9cf4bdbf24a9933f2b4bde0346 100644 (file)
@@ -130,7 +130,7 @@ func writeType(buf *bytes.Buffer, typ Type, qf Qualifier, visited []Type) {
                // Unions only appear as (syntactic) embedded elements
                // in interfaces and syntactically cannot be empty.
                if t.NumTerms() == 0 {
-                       panic("internal error: empty union")
+                       panic("empty union")
                }
                for i, t := range t.terms {
                        if i > 0 {
@@ -183,7 +183,7 @@ func writeType(buf *bytes.Buffer, typ Type, qf Qualifier, visited []Type) {
                case RecvOnly:
                        s = "<-chan "
                default:
-                       panic("unreachable")
+                       unreachable()
                }
                buf.WriteString(s)
                if parens {
@@ -329,7 +329,7 @@ func writeTuple(buf *bytes.Buffer, tup *Tuple, variadic bool, qf Qualifier, visi
                                        // special case:
                                        // append(s, "foo"...) leads to signature func([]byte, string...)
                                        if t := asBasic(typ); t == nil || t.kind != String {
-                                               panic("internal error: string type expected")
+                                               panic("expected string type")
                                        }
                                        writeType(buf, typ, qf, visited)
                                        buf.WriteString("...")
index fcd83ce688ab610a4acff766b02ac72df9c10622..0325c72dbb5f1eb00ae4fa73304e4d14fc8bb102 100644 (file)
@@ -129,7 +129,7 @@ func overlappingTerm(terms []*term, y *term) int {
                // disjoint requires non-nil, non-top arguments
                if debug {
                        if x == nil || x.typ == nil || y == nil || y.typ == nil {
-                               panic("internal error: empty or top union term")
+                               panic("empty or top union term")
                        }
                }
                if !x.disjoint(y) {
index 7b6c297d05416c7079557e1f747cb2b2f05b96c1..55bf0982b302e1808d8e2d958dceed247fd396e7 100644 (file)
@@ -258,6 +258,6 @@ func def(obj Object) {
                }
        }
        if scope.Insert(obj) != nil {
-               panic("internal error: double declaration")
+               panic("double declaration of predeclared identifier")
        }
 }