diff options
author | OpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com> | 2020-01-15 01:37:19 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-15 01:37:19 +0100 |
commit | 12aa9caf97bdcb6dc71a8c94c4875f9e0e87022a (patch) | |
tree | f0dc54d0ff39dc1f5ad56ecf8619f47ea7f22771 /vendor/github.com/pkg/errors/go113.go | |
parent | 0aa9dba3e1009dbbdf59d47d9370db0de4679730 (diff) | |
parent | f5bda9994d5e6cb1ee42ade5e7786059feedf633 (diff) | |
download | podman-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.go | 71 |
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 +} |