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