summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-errors/v2/standard.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/codeberg.org/gruf/go-errors/v2/standard.go')
-rw-r--r--vendor/codeberg.org/gruf/go-errors/v2/standard.go106
1 files changed, 0 insertions, 106 deletions
diff --git a/vendor/codeberg.org/gruf/go-errors/v2/standard.go b/vendor/codeberg.org/gruf/go-errors/v2/standard.go
deleted file mode 100644
index 2a4671153..000000000
--- a/vendor/codeberg.org/gruf/go-errors/v2/standard.go
+++ /dev/null
@@ -1,106 +0,0 @@
-package errors
-
-import (
- "errors"
- "reflect"
-
- "codeberg.org/gruf/go-bitutil"
-)
-
-// Is reports whether any error in err's chain matches any of targets
-// (up to a max of 64 targets).
-//
-// 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 error, targets ...error) bool {
- var flags bitutil.Flags64
-
- // Flags only has 64 bit slots
- if len(targets) > 64 {
- panic("too many targets")
- }
-
- // Check if error is nil so we can catch
- // the fast-case where a target is nil
- isNil := (err == nil)
-
- for i := 0; i < len(targets); {
- // Drop nil targets
- if targets[i] == nil {
- if isNil /* match! */ {
- return true
- }
- targets = append(targets[:i], targets[i+1:]...)
- continue
- }
-
- // Check if this error is directly comparable
- if reflect.TypeOf(targets[i]).Comparable() {
- flags = flags.Set(uint8(i))
- }
-
- i++
- }
-
- for err != nil {
- var errorIs func(error) bool
-
- // Check if this layer supports .Is interface
- is, ok := err.(interface{ Is(error) bool })
- if ok {
- errorIs = is.Is
- } else {
- errorIs = neveris
- }
-
- for i := 0; i < len(targets); i++ {
- // Try directly compare errors
- if flags.Get(uint8(i)) &&
- err == targets[i] {
- return true
- }
-
- // Try use .Is() interface
- if errorIs(targets[i]) {
- return true
- }
- }
-
- // Unwrap to next layer
- err = errors.Unwrap(err)
- }
-
- return false
-}
-
-// As finds the first error in err's chain that matches target, and if one is found, sets
-// target to that error value and returns true. Otherwise, it returns false.
-//
-// 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.
-//
-// An error type might provide an As method so it can be treated as if it were a
-// different error type.
-//
-// As panics if target is not a non-nil pointer to either a type that implements
-// error, or to any interface type.
-func As(err error, target interface{}) bool {
- return errors.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 errors.Unwrap(err)
-}
-
-// neveris fits the .Is(error) bool interface function always returning false.
-func neveris(error) bool { return false }