From 1b3db48db7afc3fe17440af28cdeac67a0d048f1 Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Mon, 22 Dec 2025 16:35:42 -0800 Subject: 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 Reviewed-by: Dmitri Shuralyov Auto-Submit: Damien Neil LUCI-TryBot-Result: Go LUCI --- src/errors/join_test.go | 34 ---------------------------------- 1 file changed, 34 deletions(-) (limited to 'src/errors/join_test.go') diff --git a/src/errors/join_test.go b/src/errors/join_test.go index 439b372ca0..4828dc4d75 100644 --- a/src/errors/join_test.go +++ b/src/errors/join_test.go @@ -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...) - } - }) - } -} -- cgit v1.3 From 3faf988f217f59630509c057f48549f59a02c25e Mon Sep 17 00:00:00 2001 From: Damien Neil Date: Tue, 23 Dec 2025 09:42:37 -0800 Subject: errors: add a test verifying join does not flatten errors For #76961 Change-Id: Ib81f3202074bf83a5b204b32706445f051f837a8 Reviewed-on: https://go-review.googlesource.com/c/go/+/732360 Auto-Submit: Damien Neil LUCI-TryBot-Result: Go LUCI Reviewed-by: Sean Liao Reviewed-by: Michael Knyszek --- src/errors/join_test.go | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/errors/join_test.go') diff --git a/src/errors/join_test.go b/src/errors/join_test.go index 4828dc4d75..8ee4d7f77b 100644 --- a/src/errors/join_test.go +++ b/src/errors/join_test.go @@ -25,6 +25,7 @@ func TestJoinReturnsNil(t *testing.T) { func TestJoin(t *testing.T) { err1 := errors.New("err1") err2 := errors.New("err2") + merr := multiErr{errors.New("err3")} for _, test := range []struct { errs []error want []error @@ -37,6 +38,9 @@ func TestJoin(t *testing.T) { }, { errs: []error{err1, nil, err2}, want: []error{err1, err2}, + }, { + errs: []error{merr}, + want: []error{merr}, }} { got := errors.Join(test.errs...).(interface{ Unwrap() []error }).Unwrap() if !reflect.DeepEqual(got, test.want) { -- cgit v1.3