mirror of
https://github.com/golang/go.git
synced 2026-04-01 17:07:17 +09:00
Revert "errors: optimize errors.Join for single unwrappable errors"
This reverts CL 635115. Reason for revert: The new behavior does not match the function documentation. Fixes #76961 Change-Id: If2450aa4efba28c7a12887a5b306c231a836e740 Reviewed-on: https://go-review.googlesource.com/c/go/+/731981 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Damien Neil <dneil@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
committed by
Gopher Robot
parent
b6b8b2fe6e
commit
1b3db48db7
@@ -27,16 +27,6 @@ func Join(errs ...error) error {
|
||||
if n == 0 {
|
||||
return nil
|
||||
}
|
||||
if n == 1 {
|
||||
for _, err := range errs {
|
||||
if _, ok := err.(interface {
|
||||
Unwrap() []error
|
||||
}); ok {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
e := &joinError{
|
||||
errs: make([]error, 0, n),
|
||||
}
|
||||
|
||||
@@ -70,37 +70,3 @@ func TestJoinErrorMethod(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkJoin(b *testing.B) {
|
||||
for _, bb := range []struct {
|
||||
name string
|
||||
errs []error
|
||||
}{
|
||||
{
|
||||
name: "no error",
|
||||
},
|
||||
{
|
||||
name: "single non-nil error",
|
||||
errs: []error{errors.New("err")},
|
||||
},
|
||||
{
|
||||
name: "multiple errors",
|
||||
errs: []error{errors.New("err"), errors.New("newerr"), errors.New("newerr2")},
|
||||
},
|
||||
{
|
||||
name: "unwrappable single error",
|
||||
errs: []error{errors.Join(errors.New("err"))},
|
||||
},
|
||||
{
|
||||
name: "nil first error",
|
||||
errs: []error{nil, errors.New("newerr")},
|
||||
},
|
||||
} {
|
||||
b.Run(bb.name, func(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
_ = errors.Join(bb.errs...)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user