Package Errors: fix compatiblity with GOROOT errors packages + fix recursive HasCode function

This commit is contained in:
Nicolas JUHEL
2025-02-05 17:17:29 +01:00
parent 82d32d81b0
commit fe90c8e82c
2 changed files with 28 additions and 2 deletions

View File

@@ -133,7 +133,7 @@ func (e *ers) HasCode(code CodeError) bool {
}
for _, p := range e.p {
if p.IsCode(code) {
if p.HasCode(code) {
return true
}
}
@@ -285,6 +285,31 @@ func (e *ers) GetErrorSlice() []error {
return r
}
func (e *ers) Unwrap() []error {
var r = []error{
&ers{
c: e.c,
e: e.e,
p: nil,
t: e.t,
},
}
if len(e.p) < 1 {
return r
}
for _, v := range e.p {
if v == nil {
continue
}
r = append(r, v.Unwrap()...)
}
return r
}
func (e *ers) GetTrace() string {
if e.t.File != "" {
return fmt.Sprintf("%s#%d", filterPath(e.t.File), e.t.Line)

View File

@@ -95,6 +95,8 @@ type Error interface {
GetError() error
//GetErrorSlice is used to return a slice of new error interface, based of the current error and all parent
GetErrorSlice() []error
//Unwrap will set compliance with errors As/Is functions
Unwrap() []error
//GetTrace will return a comped string for the trace of the current Error
GetTrace() string
@@ -137,7 +139,6 @@ func Is(e error) bool {
func Get(e error) Error {
var err Error
if errors.As(e, &err) {
return err
}