...

Source file src/github.com/hashicorp/go-multierror/flatten.go

Documentation: github.com/hashicorp/go-multierror

     1  package multierror
     2  
     3  // Flatten flattens the given error, merging any *Errors together into
     4  // a single *Error.
     5  func 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  
    17  func 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  }
    27  

View as plain text