This repository has been archived by the owner on Sep 30, 2024. It is now read-only.
chore: Change errors.HasType to respect multi-errors #63024
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
With this patch, the
errors.HasType
API behaves similar toIs
andAs
,where it checks the full error tree instead of just checking a linearized version
of it, as cockroachdb/errors's
HasType
implementation does not respectmulti-errors (cockroachdb/errors#145).
As a consequence, a bunch of relationships between HasType and Is/As that
you'd intuitively expect to hold are now true; see changes to
invariants_test.go
.Q: Why not make the change upstream and submit a version bump PR here?
A: This PR also tweaks the API to use a type argument rather than a value
argument, since the call-site is less clearer when you pass a value to check
the type. However, that would be a breaking change to make upstream,
so we just make that here.
Test plan
If we have tests for the existing error paths, then this should be good enough.
Changelog