@@ -4,11 +4,11 @@ package errors
44// a stack trace.
55func Wrap (err error , prefix string ) * Wrapped {
66 if w , ok := err .(* Wrapped ); ok {
7- w .errors = append (w .errors , newWrapped (err , prefix ))
7+ w .Errors = append (w .Errors , newWrapped (err , prefix ))
88 return w
99 }
1010 return & Wrapped {
11- errors : []* Wrapped {newWrapped (err , prefix )},
11+ Errors : []* Wrapped {newWrapped (err , prefix )},
1212 }
1313}
1414
@@ -19,9 +19,9 @@ func HasType(err error, typ string) bool {
1919 if ! ok {
2020 return false
2121 }
22- for i := len (w .errors ) - 1 ; i >= 0 ; i -- {
23- for j := 0 ; j < len (w .errors [i ].Types ); j ++ {
24- if w .errors [i ].Types [j ] == typ {
22+ for i := len (w .Errors ) - 1 ; i >= 0 ; i -- {
23+ for j := 0 ; j < len (w .Errors [i ].Types ); j ++ {
24+ if w .Errors [i ].Types [j ] == typ {
2525 return true
2626 }
2727 }
@@ -32,7 +32,12 @@ func HasType(err error, typ string) bool {
3232// Cause extracts and returns the root error
3333func Cause (err error ) error {
3434 if w , ok := err .(* Wrapped ); ok {
35- return w .errors [0 ]
35+ // if root level error
36+ if len (w .Errors ) > 0 {
37+ return w .Errors [0 ]
38+ }
39+ // already extracted error
40+ return w
3641 }
3742 return err
3843}
@@ -42,8 +47,8 @@ func Cause(err error) error {
4247func IsErr (err , errType error ) bool {
4348 if w , ok := err .(* Wrapped ); ok {
4449 // if root level error
45- if len (w .errors ) > 0 {
46- return w .errors [0 ].Err == errType
50+ if len (w .Errors ) > 0 {
51+ return w .Errors [0 ].Err == errType
4752 }
4853 // already extracted error
4954 return w .Err == errType
0 commit comments