]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/zclconf/go-cty/cty/function/error.go
deps: github.com/hashicorp/terraform@sdk-v0.11-with-go-modules
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / zclconf / go-cty / cty / function / error.go
1 package function
2
3 import (
4 "fmt"
5 "runtime/debug"
6 )
7
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.
10 //
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 {
14 error
15 Index int
16 }
17
18 func NewArgErrorf(i int, f string, args ...interface{}) error {
19 return ArgError{
20 error: fmt.Errorf(f, args...),
21 Index: i,
22 }
23 }
24
25 func NewArgError(i int, err error) error {
26 return ArgError{
27 error: err,
28 Index: i,
29 }
30 }
31
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 {
37 Value interface{}
38 Stack []byte
39 }
40
41 func errorForPanic(val interface{}) error {
42 return PanicError{
43 Value: val,
44 Stack: debug.Stack(),
45 }
46 }
47
48 func (e PanicError) Error() string {
49 return fmt.Sprintf("panic in function implementation: %s\n%s", e.Value, e.Stack)
50 }