File tree Expand file tree Collapse file tree 1 file changed +20
-25
lines changed
Expand file tree Collapse file tree 1 file changed +20
-25
lines changed Original file line number Diff line number Diff line change @@ -114,37 +114,32 @@ func Find[T error](err error) (T, bool) {
114114 return zero , false
115115 }
116116 var ptr * T
117- return find (err , & ptr )
117+ return find (& ptr , err )
118118}
119119
120- func find [T error ](err error , ptr2 * * T ) (T , bool ) {
121- x , ok := err .(T )
122- if ok {
123- return x , true
124- }
125- if x , ok := err .(interface { As (any ) bool }); ok {
126- if * ptr2 == nil {
127- * ptr2 = new (T )
128- }
129- if x .As (* ptr2 ) {
130- return * * ptr2 , true
120+ func find [T error ](ptr2 * * T , errs ... error ) (T , bool ) {
121+ for _ , err := range errs {
122+ x , ok := err .(T )
123+ if ok {
124+ return x , true
131125 }
132- }
133- switch x := err .(type ) {
134- case interface { Unwrap () error }:
135- err = x .Unwrap ()
136- if err == nil {
137- break
126+ if x , ok := err .(interface { As (any ) bool }); ok {
127+ if * ptr2 == nil {
128+ * ptr2 = new (T )
129+ }
130+ if x .As (* ptr2 ) {
131+ return * * ptr2 , true
132+ }
138133 }
139- return find ( err , ptr2 )
140- case interface { Unwrap () [] error }:
141- for _ , err := range x .Unwrap () {
134+ switch x := err .( type ) {
135+ case interface { Unwrap () error }:
136+ err = x .Unwrap ()
142137 if err == nil {
143- continue
144- }
145- if x , ok := find (err , ptr2 ); ok {
146- return x , true
138+ break
147139 }
140+ return find (ptr2 , err )
141+ case interface { Unwrap () []error }:
142+ return find (ptr2 , x .Unwrap ()... )
148143 }
149144 }
150145 var zero T
You can’t perform that action at this time.
0 commit comments