gitee.com/wgliang/goreporter@v0.0.0-20180902115603-df1b20f7c5d0/linters/interfacer/testdata/files/params.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  type Seeker interface {
    17  	Seek(int64, int) (int64, error)
    18  }
    19  
    20  type ReadSeeker interface {
    21  	Reader
    22  	Seeker
    23  }
    24  
    25  func Args(rc ReadCloser) {
    26  	b := make([]byte, 10)
    27  	rc.Read(b)
    28  	rc.Close()
    29  }
    30  
    31  func ArgsWrong(rc ReadCloser) { // WARN rc can be Reader
    32  	b := make([]byte, 10)
    33  	rc.Read(b)
    34  }
    35  
    36  func ArgsLit(rs ReadSeeker) {
    37  	b := make([]byte, 10)
    38  	rs.Read(b)
    39  	rs.Seek(20, 0)
    40  }
    41  
    42  func ArgsLitWrong(rs ReadSeeker) { // WARN rs can be Seeker
    43  	rs.Seek(20, 0)
    44  }
    45  
    46  func ArgsLit2(rs ReadSeeker) {
    47  	rs.Read([]byte{})
    48  	rs.Seek(20, 0)
    49  }
    50  
    51  func ArgsLit2Wrong(rs ReadSeeker) { // WARN rs can be Reader
    52  	rs.Read([]byte{})
    53  }
    54  
    55  func ArgsNil(rs ReadSeeker) {
    56  	rs.Read(nil)
    57  	rs.Seek(20, 0)
    58  }
    59  
    60  func ArgsNilWrong(rs ReadSeeker) { // WARN rs can be Reader
    61  	rs.Read(nil)
    62  }
    63  
    64  type St struct{}
    65  
    66  func (s St) Args(rc ReadCloser) {
    67  	var b []byte
    68  	rc.Read(b)
    69  	rc.Close()
    70  }
    71  
    72  func (s St) ArgsWrong(rc ReadCloser) { // WARN rc can be Reader
    73  	b := make([]byte, 10)
    74  	rc.Read(b)
    75  }
    76  
    77  type argBad struct{}
    78  
    79  func (a argBad) Read(n int) (int, error) {
    80  	return 0, nil
    81  }
    82  
    83  func (a argBad) Close(n int) error {
    84  	return nil
    85  }
    86  
    87  type argGood struct{}
    88  
    89  func (a argGood) Read(p []byte) (int, error) {
    90  	return 0, nil
    91  }
    92  
    93  func ArgsMismatch(a argBad) {
    94  	a.Read(10)
    95  }
    96  
    97  func ArgsMatch(a argGood) { // WARN a can be Reader
    98  	b := make([]byte, 10)
    99  	a.Read(b)
   100  }
   101  
   102  func ArgsMismatchNum(a argBad) {
   103  	a.Close(3)
   104  }
   105  
   106  func ArgsExtra() {
   107  	println(12, "foo")
   108  }
   109  
   110  func BuiltinExtra(s string) {
   111  	i := 2
   112  	b := make([]byte, i)
   113  	_ = append(b, s...)
   114  }