mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-09-20 18:19:59 +00:00
27 lines
568 B
Go
27 lines
568 B
Go
package multierror
|
|
|
|
// Flatten flattens the given error, merging any *Errors together into
|
|
// a single *Error.
|
|
func Flatten(err error) error {
|
|
// If it isn't an *Error, just return the error as-is
|
|
if _, ok := err.(*Error); !ok {
|
|
return err
|
|
}
|
|
|
|
// Otherwise, make the result and flatten away!
|
|
flatErr := new(Error)
|
|
flatten(err, flatErr)
|
|
return flatErr
|
|
}
|
|
|
|
func flatten(err error, flatErr *Error) {
|
|
switch err := err.(type) {
|
|
case *Error:
|
|
for _, e := range err.Errors {
|
|
flatten(e, flatErr)
|
|
}
|
|
default:
|
|
flatErr.Errors = append(flatErr.Errors, err)
|
|
}
|
|
}
|