8 // ArgError represents an error with one of the arguments in a call. The
9 // attribute Index represents the zero-based index of the argument in question.
11 // Its error *may* be a cty.PathError, in which case the error actually
12 // pertains to a nested value within the data structure passed as the argument.
13 type ArgError struct {
18 func NewArgErrorf(i int, f string, args ...interface{}) error {
20 error: fmt.Errorf(f, args...),
25 func NewArgError(i int, err error) error {
32 // PanicError indicates that a panic occurred while executing either a
33 // function's type or implementation function. This is captured and wrapped
34 // into a normal error so that callers (expected to be language runtimes)
35 // are freed from having to deal with panics in buggy functions.
36 type PanicError struct {
41 func errorForPanic(val interface{}) error {
48 func (e PanicError) Error() string {
49 return fmt.Sprintf("panic in function implementation: %s\n%s", e.Value, e.Stack)