38 Commits

Author SHA1 Message Date
Dave Cheney
d146efd52a relocate cause 2016-06-08 20:25:18 +10:00
Dave Cheney
19140ea8c4 Remove deprecated Location interface 2016-06-08 19:34:10 +10:00
Dave Cheney
3cdd33210d Introduce Stacktrace and Frame (#37)
* Introduce Stacktrace and Frame

This PR is a continuation of a series aimed at exposing the stack trace
information embedded in each error value. The secondary effect is to
deprecated the `Fprintf` helper.

Taking cues from from @chrishines' `stack` package this PR introduces a
new interface `Stacktrace() []Frame` and a `Frame` type, similar in
function to the `runtime.Frame` type (although lacking its iterator
type). Each `Frame` implemnts `fmt.Formatter` allowing it to print
itself.

The older `Location` interface is still supported but also deprecated.
2016-06-07 14:23:05 +10:00
Dave Cheney
b700c3e918 fix typo 2016-06-06 20:27:34 +10:00
Dave Cheney
431554f80b Remove errors.wrap helper
`errors.wrap` existed to avoid the conflict between the type,
`errors.cause` and the formal parameter `cause`. The parameter was
renamed to err in #32 so there is no need for the helper.
2016-05-26 15:24:04 +10:00
Mat Ryer
936b5d744d renamed cause argument to err - fixes #32 (#33) 2016-05-25 09:59:37 +10:00
Dave Cheney
e8c21980b6 Make errors.stack comparable (#30)
Fixed #29

errors.New, etc values are not expected to be compared by value but
the change in errors#27 made them incomparable. Assert that various
kinds of errors have a functional equality operator, even if the
result of that equality is always false.
2016-05-24 12:36:43 +10:00
Dave Cheney
cc157cd49f Store the stack of the caller to New, Errorf, Wrap and Wrapf (#27)
Store up to 32 stack frames for the caller to New, Errorf, Wrap, and
Wrapf.
2016-05-23 18:47:43 +10:00
Dave Cheney
567ccaadc6 Split stack.Location into a private helper 2016-05-23 17:36:45 +10:00
Dave Cheney
80cce0ee9b Rename errors.location to errors.stack (#26) 2016-05-23 17:32:36 +10:00
Dave Cheney
daa1017c6f Refactor errors.location to be a stack of callers (#25)
Refactory errors.location to be a stack of callers rather than the
topmost caller. This is in perparation for storing the entire error
stack inside topmost error.
2016-05-23 17:10:14 +10:00
Dave Cheney
d814416a46 update package description (#24) 2016-05-11 07:41:07 +10:00
Dave Cheney
01fff4b066 Remove errors.Print (#23)
errors.Print had a number of problems. Firstly, it was hard coded to
print to os.Stderr, which made it difficult to test, and hard to write
an example test for. Secondly, comments made in issue #20 make it clear
that helpers need to have a high bar for inclusion in this package, and
something that wrapped errors.Fprint in a way that was hard to test
fails that bar.

So, Remove errors.Print, which frees the identifier for being reused
later, and reduces the size of the package.
2016-05-10 11:02:00 +10:00
Jud White
0d62637d04 errors.go: "nor" -> "not" (typo fix) (#17) 2016-05-04 06:53:04 +08:00
Santiago Corredoira Lascaray
7a0abd8f63 Add Errorf (#14) 2016-04-30 08:38:57 +10:00
Dave Cheney
cd6e0b425d address spelling mistakes. Thanks @seh 2016-04-27 10:39:47 +10:00
Dave Cheney
7efa461bd3 Fix spelling mistake in comment 2016-04-26 12:27:40 +10:00
Dave Cheney
3612ec480e Remove the errors.e type (#11)
* rename loc type to location

* move locationer interface inside Fprint, rename to location

* refactor Wrap/Wrapf into helper method

* remove errors.e type, compose an anon struct in wrap and add a Message() interface method to extract the cause message
2016-04-26 12:25:34 +10:00
Dave Cheney
f85d45fecf Merge pull request #7 from umairidris/wrapf
Add Wrapf
2016-04-25 13:42:03 +09:00
Umair Idris
9a179122f1 Add Wrapf 2016-04-25 00:31:25 -04:00
Chris Hines
046fc1474d Updates from code review. 2016-04-24 21:36:07 -04:00
Chris Hines
665006faab Infer compile time GOPATH from fn.Name(). 2016-04-24 20:49:56 -04:00
Dave Cheney
ab94cc2ab2 fix loc.Location, re-enable tip 2016-04-25 07:42:30 +09:00
Umair Idris
c94cbcebe9 gofmt and typo fix 2016-04-24 15:34:22 -04:00
Dave Cheney
1c843d4ac5 spelling 2016-04-24 20:57:12 +09:00
Dave Cheney
bca5e1997f readme 2016-04-24 20:55:50 +09:00
Dave Cheney
326e08fb88 godoc 2016-04-24 20:53:36 +09:00
Anthony Yeh
44b2f1e7ac Don't pass arbitrary strings as Errorf() format strings.
Sometimes they happen to contain format specifiers, which results in
things like "%!v(MISSING)".
2016-04-24 00:08:22 -07:00
Dave Cheney
9eacf05e26 update package doc 2016-04-23 14:27:48 +09:00
Dave Cheney
109ee590a8 simplify pc 2016-04-22 19:32:12 +09:00
Dave Cheney
a7f2be0bfe added godoc 2016-04-22 19:10:04 +09:00
Dave Cheney
5a0856ff23 fixed tests, add coverage for Wrap and Fprintf 2016-04-22 17:27:54 +09:00
Dave Cheney
c978824ef0 wip 2016-04-20 13:14:31 +09:00
Dave Cheney
7b7bdcfe0a Remove New, replace with Wrap. 2016-03-28 13:44:17 +11:00
Dave Cheney
105e86fc3b fixing layout to make Andy happy 2015-12-27 16:12:56 +01:00
Dave Cheney
9c1c579e61 remove causer 2015-12-27 15:58:27 +01:00
Dave Cheney
4dd713cae9 Added cause interface trait 2015-12-27 15:45:25 +01:00
Dave Cheney
1e412a1049 Added New and Cause methods. 2015-12-27 15:19:49 +01:00