aboutsummaryrefslogtreecommitdiff
path: root/src/errors
diff options
context:
space:
mode:
authorMarcel van Lohuizen <mpvl@golang.org>2019-03-13 16:25:02 +0100
committerMarcel van Lohuizen <mpvl@golang.org>2019-03-14 09:45:22 +0000
commit1f90d081391d4f5911960fd28d81d7ea5e554a8f (patch)
tree56293e016a78493038bd21a68f783f33132d1583 /src/errors
parent8bf18b56a47a98b9dd2fa03beb358312237a8c76 (diff)
downloadgo-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.go21
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
}