gitee.com/wgliang/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/interfacer/testdata/files/nested_func.go (about)

     1  package foo
     2  
     3  type Closer interface {
     4  	Close() error
     5  }
     6  
     7  type Reader interface {
     8  	Read(p []byte) (n int, err error)
     9  }
    10  
    11  type ReadCloser interface {
    12  	Reader
    13  	Closer
    14  }
    15  
    16  func FooGo(rc ReadCloser) {
    17  	rc.Read(nil)
    18  	go func() {
    19  		rc.Close()
    20  	}()
    21  }
    22  
    23  func FooArg(rc ReadCloser) {
    24  	rc.Read(nil)
    25  	f := func(err error) {}
    26  	f(rc.Close())
    27  }
    28  
    29  func FooGoWrong(rc ReadCloser) { // WARN rc can be Closer
    30  	go func() {
    31  		rc.Close()
    32  	}()
    33  }
    34  
    35  func FooArgWrong(rc ReadCloser) { // WARN rc can be Closer
    36  	f := func(err error) {}
    37  	f(rc.Close())
    38  }
    39  
    40  func FooNestedWrongIgnored(rc ReadCloser) { // WARN rc can be Reader
    41  	f := func(rc ReadCloser) {
    42  		rc.Close()
    43  	}
    44  	f(nil)
    45  	b := make([]byte, 10)
    46  	rc.Read(b)
    47  }