diff options
author | Marcel van Lohuizen <mpvl@golang.org> | 2019-03-13 16:25:02 +0100 |
---|---|---|
committer | Marcel van Lohuizen <mpvl@golang.org> | 2019-03-14 09:45:22 +0000 |
commit | 1f90d081391d4f5911960fd28d81d7ea5e554a8f (patch) | |
tree | 56293e016a78493038bd21a68f783f33132d1583 /src/errors | |
parent | 8bf18b56a47a98b9dd2fa03beb358312237a8c76 (diff) | |
download | go-1f90d081391d4f5911960fd28d81d7ea5e554a8f.tar.gz go-1f90d081391d4f5911960fd28d81d7ea5e554a8f.zip |
fmt: make type of fmt.Errorf the same as that of errors.New
This applies only for cases where %w is not used.
The purpose of this change is to reduce test failures where tests
depend on these two being the same type, as they previously were.
Change-Id: I2dd28b93fe1d59f3cfbb4eb0875d1fb8ee699746
Reviewed-on: https://go-review.googlesource.com/c/go/+/167402
Run-TryBot: Marcel van Lohuizen <mpvl@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Damien Neil <dneil@google.com>
Diffstat (limited to 'src/errors')
-rw-r--r-- | src/errors/errors.go | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/errors/errors.go b/src/errors/errors.go index ebb136cdd4..51175b13c8 100644 --- a/src/errors/errors.go +++ b/src/errors/errors.go @@ -5,7 +5,10 @@ // Package errors implements functions to manipulate errors. package errors -import "runtime" +import ( + "internal/errinternal" + "runtime" +) // New returns an error that formats as the given text. // @@ -15,21 +18,33 @@ func New(text string) error { // Inline call to errors.Callers to improve performance. var s Frame runtime.Callers(2, s.frames[:]) - return &errorString{text, s} + return &errorString{text, nil, s} +} + +func init() { + errinternal.NewError = func(text string, err error) error { + var s Frame + runtime.Callers(3, s.frames[:]) + return &errorString{text, err, s} + } } // errorString is a trivial implementation of error. type errorString struct { s string + err error frame Frame } func (e *errorString) Error() string { + if e.err != nil { + return e.s + ": " + e.err.Error() + } return e.s } func (e *errorString) FormatError(p Printer) (next error) { p.Print(e.s) e.frame.Format(p) - return nil + return e.err } |