| // 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) // *error |
| errors.As(nil, &m) // *T where T implemements error |
| errors.As(nil, &f) // *interface |
| errors.As(nil, perr()) // *error, via a call |
| 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()) |
| } |