```go package main import ( "fmt" "emperror.dev/errors" "emperror.dev/errors/match" ) type ( myErrorKind string MyError struct { kind myErrorKind cause error } ) func (e MyError) Error() string { return fmt.Sprintf("%s: %+v", e.kind, e.cause) } func main() { var ( err1 error = MyError{ kind: "my type", cause: errors.Sentinel("some error"), } targetTrueErrors MyError targetTrueMatch MyError ) fromErrorsTrue := errors.As(err1, &targetTrueErrors) fromMatchTrue := match.As(&targetTrueMatch).MatchError(err1) fmt.Println("Expecting true:") fmt.Printf(" From errors: %t\n", fromErrorsTrue) fmt.Printf(" From match : %t\n", fromMatchTrue) var ( err2 error = errors.Sentinel("some error") targetFalseErrors MyError targetFalseMatch MyError ) fromErrorsFalse := errors.As(err2, &targetFalseErrors) fromMatchFalse := match.As(&targetFalseMatch).MatchError(err2) fmt.Println("Expecting false:") fmt.Printf(" From errors: %t\n", fromErrorsFalse) fmt.Printf(" From match : %t\n", fromMatchFalse) } // Output: // Expecting true: // From errors: true // From match : true // Expecting false: // From errors: false // From match : true ``` I suspect the problem is at [this line](https://github.com/emperror/errors/blob/2d45eb4d2f12eaee3e27e352a4609476da6dc774/match/match.go#L75), but since I'm in a hurry I haven't tried to solve the problem yet
Activity
sagikazarmark commentedon Feb 23, 2020
Thanks for opening this issue @Fryuni , sorry I missed it. Looking at it.
AlekSi commentedon Jul 29, 2020
Any news? :)
sagikazarmark commentedon Jul 29, 2020
Sorry, I didn't have time to look at it yet. PRs are always welcome though.
Fryuni commentedon Jan 24, 2022
Took me a long while to get some time to contribute to OSS again. I'll send a PR fixing this in a moment