mirror of
				https://gitea.com/Lydanne/buildx.git
				synced 2025-11-04 10:03:42 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package function
 | 
						|
 | 
						|
import (
 | 
						|
	"fmt"
 | 
						|
	"runtime/debug"
 | 
						|
)
 | 
						|
 | 
						|
// ArgError represents an error with one of the arguments in a call. The
 | 
						|
// attribute Index represents the zero-based index of the argument in question.
 | 
						|
//
 | 
						|
// Its error *may* be a cty.PathError, in which case the error actually
 | 
						|
// pertains to a nested value within the data structure passed as the argument.
 | 
						|
type ArgError struct {
 | 
						|
	error
 | 
						|
	Index int
 | 
						|
}
 | 
						|
 | 
						|
func NewArgErrorf(i int, f string, args ...interface{}) error {
 | 
						|
	return ArgError{
 | 
						|
		error: fmt.Errorf(f, args...),
 | 
						|
		Index: i,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func NewArgError(i int, err error) error {
 | 
						|
	return ArgError{
 | 
						|
		error: err,
 | 
						|
		Index: i,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
// PanicError indicates that a panic occurred while executing either a
 | 
						|
// function's type or implementation function. This is captured and wrapped
 | 
						|
// into a normal error so that callers (expected to be language runtimes)
 | 
						|
// are freed from having to deal with panics in buggy functions.
 | 
						|
type PanicError struct {
 | 
						|
	Value interface{}
 | 
						|
	Stack []byte
 | 
						|
}
 | 
						|
 | 
						|
func errorForPanic(val interface{}) error {
 | 
						|
	return PanicError{
 | 
						|
		Value: val,
 | 
						|
		Stack: debug.Stack(),
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (e PanicError) Error() string {
 | 
						|
	return fmt.Sprintf("panic in function implementation: %s\n%s", e.Value, e.Stack)
 | 
						|
}
 |