diff --git a/compiler/errlist/errlist.go b/compiler/errlist/errlist.go index 891a8f92d..753a14265 100644 --- a/compiler/errlist/errlist.go +++ b/compiler/errlist/errlist.go @@ -3,6 +3,8 @@ package errlist import ( "errors" "fmt" + "strconv" + "strings" ) // ErrTooManyErrors is added to the ErrorList by the Trim method. @@ -15,7 +17,17 @@ func (errs ErrorList) Error() string { if len(errs) == 0 { return "" } - return fmt.Sprintf("%s (and %d more errors)", errs[0].Error(), len(errs[1:])) + // TODO(grantnelson-wf): Remove below and uncomment last line + if len(errs) == 1 { + return errs[0].Error() + } + width := len(strconv.Itoa(len(errs))) + buf := &strings.Builder{} + for i, err := range errs { + fmt.Fprintf(buf, "\n(%*d) %s", width, i, err.Error()) + } + return buf.String() + // return fmt.Sprintf("%s (and %d more errors)", errs[0].Error(), len(errs[1:])) } // ErrOrNil returns nil if ErrorList is empty, or the error otherwise. diff --git a/tests/linkname_test.go b/tests/linkname_test.go index 98d3ccadf..111c9eed7 100644 --- a/tests/linkname_test.go +++ b/tests/linkname_test.go @@ -40,7 +40,7 @@ func TestLinknameMethods(t *testing.T) { } type ( - name struct{ bytes *byte } + name struct{ Bytes *byte } nameOff int32 rtype struct{} ) @@ -51,7 +51,7 @@ func rtype_nameOff(r *rtype, off nameOff) name //go:linkname newName reflect.newName func newName(n, tag string, exported bool) name -//go:linkname name_name reflect.name.name +//go:linkname name_name internal/abi.Name.Name func name_name(name) string //go:linkname resolveReflectName reflect.resolveReflectName @@ -62,6 +62,6 @@ func TestLinknameReflectName(t *testing.T) { off := resolveReflectName(newName(info, "", false)) n := rtype_nameOff(nil, off) if s := name_name(n); s != info { - t.Fatalf("to reflect.name got %q: want %q", s, info) + t.Fatalf("to reflect's abi.Name got %q: want %q", s, info) } }