summaryrefslogtreecommitdiff
path: root/vendor/github.com/pkg/errors/go113.go
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-01-15 01:37:19 +0100
committerGitHub <noreply@github.com>2020-01-15 01:37:19 +0100
commit12aa9caf97bdcb6dc71a8c94c4875f9e0e87022a (patch)
treef0dc54d0ff39dc1f5ad56ecf8619f47ea7f22771 /vendor/github.com/pkg/errors/go113.go
parent0aa9dba3e1009dbbdf59d47d9370db0de4679730 (diff)
parentf5bda9994d5e6cb1ee42ade5e7786059feedf633 (diff)
downloadpodman-12aa9caf97bdcb6dc71a8c94c4875f9e0e87022a.tar.gz
podman-12aa9caf97bdcb6dc71a8c94c4875f9e0e87022a.tar.bz2
podman-12aa9caf97bdcb6dc71a8c94c4875f9e0e87022a.zip
Merge pull request #4866 from TomSweeneyRedHat/dev/tsweeney/buildah1.13.1
Bump to Buildah v1.13.1
Diffstat (limited to 'vendor/github.com/pkg/errors/go113.go')
-rw-r--r--vendor/github.com/pkg/errors/go113.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/vendor/github.com/pkg/errors/go113.go b/vendor/github.com/pkg/errors/go113.go
new file mode 100644
index 000000000..ed0dc7a6d
--- /dev/null
+++ b/vendor/github.com/pkg/errors/go113.go
@@ -0,0 +1,71 @@
+// +build go1.13
+
+package errors
+
+import (
+ stderrors "errors"
+)
+
+// Is reports whether any error in err's chain matches target.
+//
+// The chain consists of err itself followed by the sequence of errors obtained by
+// repeatedly calling Unwrap.
+//
+// An error is considered to match a target if it is equal to that target or if
+// it implements a method Is(error) bool such that Is(target) returns true.
+func Is(err, target error) bool { return stderrors.Is(err, target) }
+
+// As finds the first error in err's chain that matches target, and if so, sets
+// target to that error value and returns true.
+//
+// The chain consists of err itself followed by the sequence of errors obtained by
+// repeatedly calling Unwrap.
+//
+// An error matches target if the error's concrete value is assignable to the value
+// pointed to by target, or if the error has a method As(interface{}) bool such that
+// As(target) returns true. In the latter case, the As method is responsible for
+// setting target.
+//
+// As will panic if target is not a non-nil pointer to either a type that implements
+// error, or to any interface type. As returns false if err is nil.
+func As(err error, target interface{}) bool { return stderrors.As(err, target) }
+
+// Unwrap returns the result of calling the Unwrap method on err, if err's
+// type contains an Unwrap method returning error.
+// Otherwise, Unwrap returns nil.
+func Unwrap(err error) error {
+ return stderrors.Unwrap(err)
+}
+
+// Cause recursively unwraps an error chain and returns the underlying cause of
+// the error, if possible. There are two ways that an error value may provide a
+// cause. First, the error may implement the following interface:
+//
+// type causer interface {
+// Cause() error
+// }
+//
+// Second, the error may return a non-nil value when passed as an argument to
+// the Unwrap function. This makes Cause forwards-compatible with Go 1.13 error
+// chains.
+//
+// If an error value satisfies both methods of unwrapping, Cause will use the
+// causer interface.
+//
+// If the error is nil, nil will be returned without further investigation.
+func Cause(err error) error {
+ type causer interface {
+ Cause() error
+ }
+
+ for err != nil {
+ if cause, ok := err.(causer); ok {
+ err = cause.Cause()
+ } else if unwrapped := Unwrap(err); unwrapped != nil {
+ err = unwrapped
+ } else {
+ break
+ }
+ }
+ return err
+}