Unexported error sentinel values
romshark opened this issue · 1 comments
Lines 11 to 19 in 2977b8d
Is there a particular reason these error sentinel values are unexported?
Because of this I have to match errors by message, which is obviously bad:
tag, err := tags.Get(expectTag)
switch {
case err.Error() == "tag does not exist":
// handle errTagNotExist
case err != nil:
// handle other errors
}
Instead, it should be:
tag, err := tags.Get(expectTag)
switch {
case errors.Is(err, structtag.ErrTagNotExist):
// handle
case err != nil:
// handle other errors
}
I propose exporting error sentinel values. Such a change would be backward compatible anyway.
Hi @romshark
There are no particular reasons for that. The only thing was I didn't wanted to make it part of the public API, because then it would mean I wouldn't be able to make any changes. So it's an additional layer of maintenance we have to take care of. I wrote it here: #16
But given the fact this is something people rely on it, I think it makes sense to expose them.
Would you mind opening a PR? The #16 is not mergable anymore. Let's fix this.