From: Tobias Klauser Date: Wed, 3 Apr 2024 09:50:36 +0000 (+0200) Subject: errors: return early for Is(nil, ...) X-Git-Tag: go1.23rc1~696 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=af43932c20d5b59cdffca45406754dbccbb46dfa;p=gostls13.git errors: return early for Is(nil, ...) If err is nil it wouldn't match any given target error except for nil, so we can return early to speed up cases where Is is used without a preceding err != nil check. Change-Id: Ib33cff50453fe070f06871ce8074694c81ab787b Reviewed-on: https://go-review.googlesource.com/c/go/+/576015 Reviewed-by: Dmitri Shuralyov LUCI-TryBot-Result: Go LUCI Auto-Submit: Tobias Klauser Reviewed-by: Ian Lance Taylor --- diff --git a/src/errors/wrap.go b/src/errors/wrap.go index 88ee0a9281..57060517b5 100644 --- a/src/errors/wrap.go +++ b/src/errors/wrap.go @@ -42,7 +42,7 @@ func Unwrap(err error) error { // an example in the standard library. An Is method should only shallowly // compare err and the target and not call [Unwrap] on either. func Is(err, target error) bool { - if target == nil { + if err == nil || target == nil { return err == target } diff --git a/src/errors/wrap_test.go b/src/errors/wrap_test.go index 0a7bc5d16a..58ed95fd9a 100644 --- a/src/errors/wrap_test.go +++ b/src/errors/wrap_test.go @@ -30,6 +30,7 @@ func TestIs(t *testing.T) { match bool }{ {nil, nil, true}, + {nil, err1, false}, {err1, nil, false}, {err1, err1, true}, {erra, err1, true},