]> git.feebdaed.xyz Git - 0xmirror/go.git/commitdiff
Revert "errors: optimize errors.Join for single unwrappable errors"
authorDamien Neil <dneil@google.com>
Tue, 23 Dec 2025 00:35:42 +0000 (16:35 -0800)
committerGopher Robot <gobot@golang.org>
Tue, 23 Dec 2025 18:03:09 +0000 (10:03 -0800)
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>

src/errors/join.go
src/errors/join_test.go

index 08a79867c64b3ea8c343cef46f103372c4124dd1..730bf7043c683f93dee2270aec25b13380c987b6 100644 (file)
@@ -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),
        }
index 439b372ca0371d1aa546db1e18709d6ec2b8e7e9..4828dc4d755fd678d0b3ca31f7fdebc5e1dcaeaf 100644 (file)
@@ -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...)
-                       }
-               })
-       }
-}