From a6c6bdb34ab668ab810308e63325a891e404e434 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 17 Jan 2023 11:25:13 +0000 Subject: [chore]: Bump codeberg.org/gruf/go-errors/v2 from 2.0.2 to 2.1.1 (#1346) Bumps codeberg.org/gruf/go-errors/v2 from 2.0.2 to 2.1.1. --- updated-dependencies: - dependency-name: codeberg.org/gruf/go-errors/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- vendor/codeberg.org/gruf/go-errors/v2/value.go | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 vendor/codeberg.org/gruf/go-errors/v2/value.go (limited to 'vendor/codeberg.org/gruf/go-errors/v2/value.go') diff --git a/vendor/codeberg.org/gruf/go-errors/v2/value.go b/vendor/codeberg.org/gruf/go-errors/v2/value.go new file mode 100644 index 000000000..6a1f64451 --- /dev/null +++ b/vendor/codeberg.org/gruf/go-errors/v2/value.go @@ -0,0 +1,54 @@ +package errors + +// WithValue wraps err to store given key-value pair, accessible via Value() function. +func WithValue(err error, key any, value any) error { + if err == nil { + panic("nil error") + } + return &errWithValue{ + err: err, + key: key, + val: value, + } +} + +// Value searches for value stored under given key in error chain. +func Value(err error, key any) any { + var e *errWithValue + + if !As(err, &e) { + return nil + } + + return e.Value(key) +} + +type errWithValue struct { + err error + key any + val any +} + +func (e *errWithValue) Error() string { + return e.err.Error() +} + +func (e *errWithValue) Is(target error) bool { + return e.err == target +} + +func (e *errWithValue) Unwrap() error { + return Unwrap(e.err) +} + +func (e *errWithValue) Value(key any) any { + for { + if key == e.key { + return e.val + } + + if !As(e.err, &e) { + return nil + } + } +} -- cgit v1.2.3