From 2f4223ed129e787d7aadf85fefe8539f2f8e94fd Mon Sep 17 00:00:00 2001 From: franklin Date: Sat, 26 Nov 2022 00:25:43 +0100 Subject: [PATCH] fix: don't use re-pointer --- errors/wrappederror.go | 2 +- example/errors/main.go | 29 +++++++++++++++++++++++++++++ server.go | 2 +- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/errors/wrappederror.go b/errors/wrappederror.go index de19928..12ec753 100644 --- a/errors/wrappederror.go +++ b/errors/wrappederror.go @@ -15,7 +15,7 @@ func NewWrappedError(err, cause error) error { } func (e *wrappedError) As(target interface{}) bool { - return errors.As(e.err, &target) || errors.As(e.cause, &target) + return errors.As(e.err, target) || errors.As(e.cause, target) } func (e *wrappedError) Is(target error) bool { diff --git a/example/errors/main.go b/example/errors/main.go index 7412360..b966d62 100644 --- a/example/errors/main.go +++ b/example/errors/main.go @@ -13,9 +13,20 @@ var ( ErrTwo = errors.New("two") ) +type ErrThree struct { + error +} + +func (e *ErrThree) Foo() string { + return e.Error() +} + func main() { err1 := ErrOne err2 := keelerrors.NewWrappedError(err1, ErrTwo) + err3 := &ErrThree{error: errors.New("error three")} + err4 := keelerrors.NewWrappedError(err3, ErrTwo) + err5 := keelerrors.NewWrappedError(ErrTwo, err3) if errors.Is(err1, ErrOne) { fmt.Println("err1 = ErrOne") //nolint:forbidigo @@ -26,4 +37,22 @@ func main() { if errors.Is(err2, ErrOne) { fmt.Println("err2 = ErrOne") //nolint:forbidigo } + { + var foo *ErrThree + if errors.As(err3, &foo) { + fmt.Println("err3 = ErrThree (" + foo.Foo() + ")") //nolint:forbidigo + } + } + { + var foo *ErrThree + if errors.As(err4, &foo) { + fmt.Println("err4 = ErrThree (" + foo.Foo() + ")") //nolint:forbidigo + } + } + { + var foo *ErrThree + if errors.As(err5, &foo) { + fmt.Println("err5 = ErrThree (" + foo.Foo() + ")") //nolint:forbidigo + } + } } diff --git a/server.go b/server.go index 08b834a..06ad517 100644 --- a/server.go +++ b/server.go @@ -320,7 +320,7 @@ func (s *Server) Run() { } defer s.ctxCancelFn() - s.l.Info("starting keel server") + s.l.Info("starting keel server :)") // start services s.startService(s.services...)