]> Cypherpunks.ru repositories - gostls13.git/commitdiff
errors/wrap: do not call Elem() twice
authorVitaly Zdanevich <zdanevich.vitaly@ya.ru>
Mon, 8 Mar 2021 03:15:25 +0000 (03:15 +0000)
committerTobias Klauser <tobias.klauser@gmail.com>
Sat, 13 Mar 2021 17:07:07 +0000 (17:07 +0000)
Change-Id: I2fe6037c45a0dfe25f946a92ff97b5e3fbd69bc0
GitHub-Last-Rev: 644d479a27c0eccfc0b37e1a560ca09e47b5a972
GitHub-Pull-Request: golang/go#44851
Reviewed-on: https://go-review.googlesource.com/c/go/+/299629
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Trust: Tobias Klauser <tobias.klauser@gmail.com>

src/errors/wrap.go

index 7928fe673ee7a8c6ba2f9f472799f6e98563c59c..4eb4f9ae378bdbb182d4403edfd725cebbd6dfa6 100644 (file)
@@ -83,10 +83,10 @@ func As(err error, target interface{}) bool {
        if typ.Kind() != reflectlite.Ptr || val.IsNil() {
                panic("errors: target must be a non-nil pointer")
        }
-       if e := typ.Elem(); e.Kind() != reflectlite.Interface && !e.Implements(errorType) {
+       targetType := typ.Elem()
+       if targetType.Kind() != reflectlite.Interface && !targetType.Implements(errorType) {
                panic("errors: *target must be interface or implement error")
        }
-       targetType := typ.Elem()
        for err != nil {
                if reflectlite.TypeOf(err).AssignableTo(targetType) {
                        val.Elem().Set(reflectlite.ValueOf(err))