Skip to content

Commit f0b6870

Browse files
authored
Merge pull request #140 from nikitacrit/IsAny-multi-error-support
IsAny() multi error support
2 parents c1cc191 + b0e6c50 commit f0b6870

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

markers/markers.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,13 @@ func IsAny(err error, references ...error) bool {
179179
return true
180180
}
181181
}
182+
183+
// Recursively try multi-error causes, if applicable.
184+
for _, me := range errbase.UnwrapMulti(c) {
185+
if IsAny(me, references...) {
186+
return true
187+
}
188+
}
182189
}
183190

184191
// Try harder with marks.

markers/markers_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -361,6 +361,10 @@ func TestIsAny(t *testing.T) {
361361
err2 := errors.New("world")
362362
err3 := pkgErr.Wrap(err1, "world")
363363
err4 := pkgErr.Wrap(err2, "universe")
364+
err5 := errors.Join(err1, errors.New("gopher"))
365+
err6 := errors.Join(errors.New("gopher"), err2)
366+
err7 := errors.Join(err1, err2)
367+
err8 := pkgErr.Wrap(err7, "gopher")
364368
var nilErr error
365369

366370
tt.Check(markers.IsAny(err1, err1))
@@ -371,6 +375,14 @@ func TestIsAny(t *testing.T) {
371375
tt.Check(markers.IsAny(err3, err2, nilErr, err1))
372376
tt.Check(markers.IsAny(nilErr, err2, nilErr, err1))
373377
tt.Check(!markers.IsAny(nilErr, err2, err1))
378+
tt.Check(markers.IsAny(err5, err1))
379+
tt.Check(markers.IsAny(err6, err2))
380+
tt.Check(markers.IsAny(err7, err1))
381+
tt.Check(markers.IsAny(err7, err2))
382+
tt.Check(markers.IsAny(err7, err1, err2))
383+
tt.Check(markers.IsAny(err8, err1))
384+
tt.Check(markers.IsAny(err8, err2))
385+
tt.Check(markers.IsAny(err8, err1, err2))
374386
}
375387

376388
// This test demonstrates that two errors that are structurally

0 commit comments

Comments
 (0)