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/fmt | |
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/fmt')
-rw-r--r-- | src/fmt/errors.go | 5 | ||||
-rw-r--r-- | src/fmt/errors_test.go | 15 |
2 files changed, 18 insertions, 2 deletions
diff --git a/src/fmt/errors.go b/src/fmt/errors.go index 7506b6a20b..06416425c3 100644 --- a/src/fmt/errors.go +++ b/src/fmt/errors.go @@ -6,6 +6,7 @@ package fmt import ( "errors" + "internal/errinternal" "strings" ) @@ -21,7 +22,7 @@ import ( func Errorf(format string, a ...interface{}) error { err, wrap := lastError(format, a) if err == nil { - return &noWrapError{Sprintf(format, a...), nil, errors.Caller(1)} + return errinternal.NewError(Sprintf(format, a...), nil) } // TODO: this is not entirely correct. The error value could be @@ -33,7 +34,7 @@ func Errorf(format string, a ...interface{}) error { if wrap { return &wrapError{msg, err, errors.Caller(1)} } - return &noWrapError{msg, err, errors.Caller(1)} + return errinternal.NewError(msg, err) } func lastError(format string, a []interface{}) (err error, wrap bool) { diff --git a/src/fmt/errors_test.go b/src/fmt/errors_test.go index a3cd26ef3e..ed77709ea0 100644 --- a/src/fmt/errors_test.go +++ b/src/fmt/errors_test.go @@ -378,6 +378,21 @@ func TestErrorFormatter(t *testing.T) { } } +func TestSameType(t *testing.T) { + err0 := errors.New("inner") + want := fmt.Sprintf("%T", err0) + + err := fmt.Errorf("foo: %v", err0) + if got := fmt.Sprintf("%T", err); got != want { + t.Errorf("got %v; want %v", got, want) + } + + err = fmt.Errorf("foo %s", "bar") + if got := fmt.Sprintf("%T", err); got != want { + t.Errorf("got %v; want %v", got, want) + } +} + var _ errors.Formatter = wrapped{} type wrapped struct { |