github.com/mdaxf/iac@v0.0.0-20240519030858-58a061660378/vendor_skip/google.golang.org/protobuf/internal/errors/is_go112.go (about) 1 // Copyright 2020 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 //go:build !go1.13 6 // +build !go1.13 7 8 package errors 9 10 import "reflect" 11 12 // Is is a copy of Go 1.13's errors.Is for use with older Go versions. 13 func Is(err, target error) bool { 14 if target == nil { 15 return err == target 16 } 17 18 isComparable := reflect.TypeOf(target).Comparable() 19 for { 20 if isComparable && err == target { 21 return true 22 } 23 if x, ok := err.(interface{ Is(error) bool }); ok && x.Is(target) { 24 return true 25 } 26 if err = unwrap(err); err == nil { 27 return false 28 } 29 } 30 } 31 32 func unwrap(err error) error { 33 u, ok := err.(interface { 34 Unwrap() error 35 }) 36 if !ok { 37 return nil 38 } 39 return u.Unwrap() 40 }