From 23b47399cf0ea793a4c27cfbd26bd1d48bc8222c Mon Sep 17 00:00:00 2001 From: Spiegel Date: Sun, 25 Jun 2023 20:42:25 +0900 Subject: [PATCH 1/2] Bump up errs package --- zapobject/go.mod | 6 +++--- zapobject/go.sum | 17 +++++++++++------ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/zapobject/go.mod b/zapobject/go.mod index 484201a..74088c1 100644 --- a/zapobject/go.mod +++ b/zapobject/go.mod @@ -3,11 +3,11 @@ module github.com/goark/errs/zapobject go 1.20 require ( - github.com/goark/errs v1.2.3 + github.com/goark/errs v1.3.0 go.uber.org/zap v1.24.0 ) require ( - go.uber.org/atomic v1.11.0 // indirect - go.uber.org/multierr v1.11.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect ) diff --git a/zapobject/go.sum b/zapobject/go.sum index 4fc10e9..0dabfc4 100644 --- a/zapobject/go.sum +++ b/zapobject/go.sum @@ -1,15 +1,20 @@ github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= -github.com/goark/errs v1.2.3 h1:ATChtJki69yLftoXzvp1PnrSXXFJcLW3mDRExdu+Gu4= -github.com/goark/errs v1.2.3/go.mod h1:ZsQucxaDFVfSB8I99j4bxkDRfNOrlKINwg72QMuRWKw= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/goark/errs v1.3.0 h1:faiMaXCIgCt98Vmn9PGyFp7XL+zHqEK0WfBGRT1/Yz4= +github.com/goark/errs v1.3.0/go.mod h1:ZsQucxaDFVfSB8I99j4bxkDRfNOrlKINwg72QMuRWKw= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= -go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11 h1:wy28qYRKZgnJTxGxvye5/wgWr1EKjmUDGYox5mGlRlI= -go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= -go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From fd5f00ae2b3dc78bebd6ee342617519264985f4f Mon Sep 17 00:00:00 2001 From: Spiegel Date: Mon, 26 Jun 2023 07:41:50 +0900 Subject: [PATCH 2/2] Fix bug of handling Errors --- README.md | 2 +- errlist.go | 30 ++++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 9965549..2e9f3b0 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![GitHub release](http://img.shields.io/github/release/goark/errs.svg)](https://github.com/goark/errs/releases/latest) Package [errs] implements functions to manipulate error instances. -This package is required Go 1.13 or later. +This package is required Go 1.20 or later. **Migrated repository to [github.com/goark/errs][errs]** diff --git a/errlist.go b/errlist.go index 814c60c..18137d5 100644 --- a/errlist.go +++ b/errlist.go @@ -30,14 +30,13 @@ func Join(errlist ...error) error { if ct == 0 { return nil } - el := &Errors{Errs: make([]error, 0, ct)} + es := &Errors{Errs: make([]error, 0, ct)} for _, err := range errlist { if err != nil { - el.Errs = append(el.Errs, err) - ct++ + es.Errs = append(es.Errs, err) } } - return el + return es } // Add method adds errors to Errors. @@ -47,12 +46,21 @@ func (es *Errors) Add(errlist ...error) { } es.mu.Lock() defer es.mu.Unlock() - es.Errs = append(es.Errs, errlist...) + for _, err := range errlist { + if err != nil { + es.Errs = append(es.Errs, err) + } + } } // ErrorOrNil method returns this as a error type. func (es *Errors) ErrorOrNil() error { - if es == nil || len(es.Errs) == 0 { + if es == nil { + return nil + } + es.mu.RLock() + defer es.mu.RUnlock() + if len(es.Errs) == 0 { return nil } return es @@ -61,11 +69,14 @@ func (es *Errors) ErrorOrNil() error { // Error method returns error message. // This method is a implementation of error interface. func (es *Errors) Error() string { - if es == nil || len(es.Errs) == 0 { + if es == nil { return nilAngleString } es.mu.RLock() defer es.mu.RUnlock() + if len(es.Errs) == 0 { + return nilAngleString + } var b []byte for i, err := range es.Errs { if i > 0 { @@ -85,11 +96,14 @@ func (es *Errors) String() string { // GoString method returns serialize string of Errors. // This method is a implementation of fmt.GoStringer interface. func (es *Errors) GoString() string { - if es == nil || len(es.Errs) == 0 { + if es == nil { return nilAngleString } es.mu.RLock() defer es.mu.RUnlock() + if len(es.Errs) == 0 { + return nilAngleString + } return fmt.Sprintf("%T{Errs:%#v}", es, es.Errs) }