xerrors: Revert "xerrors: redirect to go1.13 primitives for 1.13" This reverts CL 167577 Reason for revert: errors.Frame and errors.Formatter were removed in CL 176997 Fixes golang/go#32246 Change-Id: I521cc1176311721a18aaf76d4966e945c8453e9d Reviewed-on: https://go-review.googlesource.com/c/xerrors/+/177379 Run-TryBot: Agniva De Sarker <agniva.quicksilver@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Matt Joiner <anacrolix@gmail.com> Reviewed-by: Damien Neil <dneil@google.com>
diff --git a/adaptor_go1_12.go b/adaptor.go similarity index 99% rename from adaptor_go1_12.go rename to adaptor.go index 6b9f2f0..4317f24 100644 --- a/adaptor_go1_12.go +++ b/adaptor.go
@@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !go1.13 - package xerrors import (
diff --git a/adaptor_go1_13.go b/adaptor_go1_13.go deleted file mode 100644 index 57f519d..0000000 --- a/adaptor_go1_13.go +++ /dev/null
@@ -1,55 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.13 - -package xerrors - -import ( - "errors" - "fmt" - "strconv" -) - -// A Frame contains part of a call stack. -type Frame = errors.Frame - -// Caller returns a Frame that describes a frame on the caller's stack. -// The argument skip is the number of frames to skip over. -// Caller(0) returns the frame for the caller of Caller. -var Caller func(skip int) Frame = errors.Caller - -// FormatError calls the FormatError method of f with an errors.Printer -// configured according to s and verb, and writes the result to s. -func FormatError(f Formatter, s fmt.State, verb rune) { - // Assuming this function is only called from the Format method, and given - // that FormatError takes precedence over Format, it cannot be called from - // any package that supports errors.Formatter. It is therefore safe to - // disregard that State may be a specific printer implementation and use one - // of our choice instead. - - width, okW := s.Width() - prec, okP := s.Precision() - - // Construct format string from State s. - format := []byte{'%'} - if s.Flag('-') { - format = append(format, '-') - } - if s.Flag('+') { - format = append(format, '+') - } - if s.Flag(' ') { - format = append(format, ' ') - } - if okW { - format = strconv.AppendInt(format, int64(width), 10) - } - if okP { - format = append(format, '.') - format = strconv.AppendInt(format, int64(prec), 10) - } - format = append(format, string(verb)...) - fmt.Fprintf(s, string(format), f) -}
diff --git a/fmt_test.go b/fmt_test.go index 5933f18..6744b8a 100644 --- a/fmt_test.go +++ b/fmt_test.go
@@ -7,6 +7,7 @@ import ( "fmt" "io" + "os" "path" "reflect" "regexp" @@ -90,7 +91,7 @@ nonascii = &wrapped{"café", nil} newline = &wrapped{"msg with\nnewline", &wrapped{"and another\none", nil}} - fallback = &wrapped{"fallback", xerrors.New("file does not exist")} + fallback = &wrapped{"fallback", os.ErrNotExist} oldAndNew = &wrapped{"new style", formatError("old style")} framed = &withFrameAndMore{ frame: xerrors.Caller(0), @@ -105,13 +106,6 @@ want string regexp bool }{{ - err: xerrors.New("foo"), - fmt: "%+v", - want: "foo:" + - "\n golang.org/x/xerrors_test.TestErrorFormatter" + - "\n .+/golang.org/x/xerrors/fmt_test.go:1\\d\\d", - regexp: true, - }, { err: simple, fmt: "%s", want: "simple", @@ -162,7 +156,7 @@ fmt: "%+v", want: "something:" + "\n golang.org/x/xerrors_test.TestErrorFormatter" + - "\n .+/fmt_test.go:9\\d" + + "\n .+/fmt_test.go:97" + "\n something more", regexp: true, }, { @@ -179,10 +173,7 @@ // Note: no colon after the last error, as there are no details. want: "fallback:" + "\n somefile.go:123" + - "\n - file does not exist:" + - "\n golang.org/x/xerrors_test.TestErrorFormatter" + - "\n .+/golang.org/x/xerrors/fmt_test.go:9\\d", - regexp: true, + "\n - file does not exist", }, { err: opaque, fmt: "%s", @@ -290,12 +281,12 @@ err: simple, fmt: "%T", want: "*xerrors_test.wrapped", - // }, { - // // The behavior for this case is different between go1.12 and go1.13. - // err: simple, - // fmt: "%🤪", - // want: "%!🤪(*xerrors_test.wrapped=&{simple <nil>})", // go1.12 - // want: "&{%!🤪(string=simple) <nil>}", // go1.13 + }, { + err: simple, + fmt: "%🤪", + want: "%!🤪(*xerrors_test.wrapped)", + // For 1.13: + // want: "%!🤪(*xerrors_test.wrapped=&{simple <nil>})", }, { err: formatError("use fmt.Formatter"), fmt: "%#v",
diff --git a/format_go1_12.go b/format.go similarity index 97% rename from format_go1_12.go rename to format.go index ba856fe..1bc9c26 100644 --- a/format_go1_12.go +++ b/format.go
@@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !go1.13 - package xerrors // A Formatter formats error messages.
diff --git a/format_go1_13.go b/format_go1_13.go deleted file mode 100644 index 95c6596..0000000 --- a/format_go1_13.go +++ /dev/null
@@ -1,19 +0,0 @@ -// Copyright 2018 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -// +build go1.13 - -package xerrors - -import "errors" - -// A Formatter formats error messages. -type Formatter = errors.Formatter - -// A Printer formats error messages. -// -// The most common implementation of Printer is the one provided by package fmt -// during Printf (as of Go 1.13). Localization packages such as golang.org/x/text/message -// typically provide their own implementations. -type Printer = errors.Printer
diff --git a/frame_go1_12.go b/frame.go similarity index 98% rename from frame_go1_12.go rename to frame.go index 6740f7f..0de628e 100644 --- a/frame_go1_12.go +++ b/frame.go
@@ -2,8 +2,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build !go1.13 - package xerrors import (