| // Copyright 2019 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| // This file contains tests for the errorsas checker. | |
| package a | |
| import "errors" | |
| type myError int | |
| func (myError) Error() string { return "" } | |
| func perr() *error { return nil } | |
| type iface interface { | |
| m() | |
| } | |
| func two() (error, interface{}) { return nil, nil } | |
| func _() { | |
| var ( | |
| e error | |
| m myError | |
| i int | |
| f iface | |
| ei interface{} | |
| ) | |
| errors.As(nil, &e) // want `second argument to errors.As should not be \*error` | |
| errors.As(nil, &m) // *T where T implements error | |
| errors.As(nil, &f) // *interface | |
| errors.As(nil, perr()) // want `second argument to errors.As should not be \*error` | |
| errors.As(nil, ei) // empty interface | |
| errors.As(nil, nil) // want `second argument to errors.As must be a non-nil pointer to either a type that implements error, or to any interface type` | |
| errors.As(nil, e) // want `second argument to errors.As must be a non-nil pointer to either a type that implements error, or to any interface type` | |
| errors.As(nil, m) // want `second argument to errors.As must be a non-nil pointer to either a type that implements error, or to any interface type` | |
| errors.As(nil, f) // want `second argument to errors.As must be a non-nil pointer to either a type that implements error, or to any interface type` | |
| errors.As(nil, &i) // want `second argument to errors.As must be a non-nil pointer to either a type that implements error, or to any interface type` | |
| errors.As(two()) | |
| } |