github.com/alkemics/goflow@v0.2.1/wrappers/constants/errors.go (about) 1 package constants 2 3 import ( 4 "fmt" 5 6 "github.com/alkemics/goflow" 7 "golang.org/x/tools/go/packages" 8 ) 9 10 type PkgError struct { 11 PkgPath string 12 Err error 13 } 14 15 func (e PkgError) Error() string { 16 return fmt.Sprintf("loading %s: %v", e.PkgPath, e.Err) 17 } 18 19 func (e PkgError) Unwrap() error { 20 return e.Err 21 } 22 23 func craftPkgError(pkgPath string, errs []packages.Error) PkgError { 24 es := make([]error, len(errs)) 25 for i, err := range errs { 26 es[i] = err 27 } 28 29 return PkgError{ 30 PkgPath: pkgPath, 31 Err: goflow.MultiError{Errs: es}, 32 } 33 } 34 35 type TypeError struct { 36 Name string 37 Err error 38 } 39 40 func (e TypeError) Error() string { 41 return fmt.Sprintf("could not find type of constant %s: %v", e.Name, e.Err) 42 } 43 44 func (e TypeError) Unwrap() error { 45 return e.Err 46 }