44 lines
949 B
Go
44 lines
949 B
Go
package tftypes
|
|
|
|
import (
|
|
"fmt"
|
|
)
|
|
|
|
// AttributePathError represents an error associated with part of a
|
|
// tftypes.Value, indicated by the Path property.
|
|
type AttributePathError struct {
|
|
Path *AttributePath
|
|
err error
|
|
}
|
|
|
|
// Equal returns true if two AttributePathErrors are semantically equal. To be
|
|
// considered equal, they must have the same path and if errors are set, the
|
|
// strings returned by their `Error()` methods must match.
|
|
func (a AttributePathError) Equal(o AttributePathError) bool {
|
|
if !a.Path.Equal(o.Path) {
|
|
return false
|
|
}
|
|
|
|
if (a.err == nil && o.err != nil) || (a.err != nil && o.err == nil) {
|
|
return false
|
|
}
|
|
|
|
if a.err == nil {
|
|
return true
|
|
}
|
|
|
|
return a.err.Error() == o.err.Error()
|
|
}
|
|
|
|
func (a AttributePathError) Error() string {
|
|
var path string
|
|
if len(a.Path.Steps()) > 0 {
|
|
path = a.Path.String() + ": "
|
|
}
|
|
return fmt.Sprintf("%s%s", path, a.err)
|
|
}
|
|
|
|
func (a AttributePathError) Unwrap() error {
|
|
return a.err
|
|
}
|