1package foo 2 3type st struct { 4 err error 5} 6 7func Foo(s st) { 8 println(s.err.Error()) 9} 10 11func NoArgs(s int) { 12 println() 13} 14 15type mint int 16 17func (m mint) Close() error { 18 return nil 19} 20 21func ConvertBasic(m mint) { 22 m.Close() 23 _ = int64(m) 24} 25 26type mstr string 27 28func (m mstr) Close() error { 29 return nil 30} 31 32func ConvertSlice(m mstr) { 33 m.Close() 34 _ = []byte(m) 35} 36 37type myFunc func() error 38 39func ConvertNoArg(f myFunc) { 40 _ = f() 41} 42 43type Closer interface { 44 Close() error 45} 46 47func WrongConvertCloser(m mstr) { // WARN m can be Closer 48 _ = Closer(m) 49 m.Close() 50} 51 52func WrongFuncLit(m mstr, dc1 func(c Closer)) { // WARN m can be Closer 53 dc1(m) 54} 55 56type doClose func(c Closer) 57 58func WrongFuncVar(m mstr, dc2 doClose) { // WARN m can be Closer 59 dc2(m) 60} 61