aboutsummaryrefslogtreecommitdiffhomepage
path: root/vendor/github.com/hashicorp/go-multierror/flatten.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/hashicorp/go-multierror/flatten.go')
-rw-r--r--vendor/github.com/hashicorp/go-multierror/flatten.go26
1 files changed, 26 insertions, 0 deletions
diff --git a/vendor/github.com/hashicorp/go-multierror/flatten.go b/vendor/github.com/hashicorp/go-multierror/flatten.go
new file mode 100644
index 0000000..aab8e9a
--- /dev/null
+++ b/vendor/github.com/hashicorp/go-multierror/flatten.go
@@ -0,0 +1,26 @@
1package multierror
2
3// Flatten flattens the given error, merging any *Errors together into
4// a single *Error.
5func Flatten(err error) error {
6 // If it isn't an *Error, just return the error as-is
7 if _, ok := err.(*Error); !ok {
8 return err
9 }
10
11 // Otherwise, make the result and flatten away!
12 flatErr := new(Error)
13 flatten(err, flatErr)
14 return flatErr
15}
16
17func flatten(err error, flatErr *Error) {
18 switch err := err.(type) {
19 case *Error:
20 for _, e := range err.Errors {
21 flatten(e, flatErr)
22 }
23 default:
24 flatErr.Errors = append(flatErr.Errors, err)
25 }
26}