forked from aws/eks-anywhere
-
Notifications
You must be signed in to change notification settings - Fork 0
/
aggregate.go
23 lines (19 loc) · 1.04 KB
/
aggregate.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package errors
import "k8s.io/apimachinery/pkg/util/errors"
// Aggregate represents an object that contains multiple errors, but does not necessarily have singular semantic meaning.
// The aggregate can be used with `errors.Is()` to check for the occurrence of a specific error type.
// Errors.As() is not supported, because the caller presumably cares about a specific error of potentially multiple that match the given type.
type Aggregate errors.Aggregate
// NewAggregate converts a slice of errors into an Aggregate interface, which
// is itself an implementation of the error interface. If the slice is empty,
// this returns nil.
// It will check if any of the element of input error list is nil, to avoid
// nil pointer panic when call Error().
func NewAggregate(errList []error) Aggregate {
return errors.NewAggregate(errList)
}
// Flatten takes an Aggregate, which may hold other Aggregates in arbitrary
// nesting, and flattens them all into a single Aggregate, recursively.
func Flatten(agg Aggregate) Aggregate {
return errors.Flatten(agg)
}