mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
[dev.typeparams] cmd/compile/internal/types2: cleanup panic calls
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>
This commit is contained in:
parent
c5b6c36ddd
commit
f78d538858
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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("...")
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -258,6 +258,6 @@ func def(obj Object) {
|
|||
}
|
||||
}
|
||||
if scope.Insert(obj) != nil {
|
||||
panic("internal error: double declaration")
|
||||
panic("double declaration of predeclared identifier")
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue