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  }