github.com/serversong/goreporter@v0.0.0-20200325104552-3cfaf44fd178/linters/interfacer/testdata/files/composite.go (about) 1 package foo 2 3 type mint int 4 5 func (m mint) Close() error { 6 return nil 7 } 8 9 func MapKey(m mint) { 10 m.Close() 11 _ = map[mint]string{ 12 m: "foo", 13 } 14 } 15 16 func MapValue(m mint) { 17 m.Close() 18 _ = map[string]mint{ 19 "foo": m, 20 } 21 } 22 23 type Fooer interface { 24 Foo() 25 } 26 27 type FooBarer interface { 28 Fooer 29 Bar() 30 } 31 32 type holdFooer struct { 33 f Fooer 34 } 35 36 type holdFooBarer struct { 37 fb FooBarer 38 } 39 40 func Correct(fb FooBarer) { 41 _ = holdFooBarer{fb: fb} 42 } 43 44 func CorrectNoKey(fb FooBarer) { 45 _ = holdFooBarer{fb} 46 } 47 48 func Wrong(fb FooBarer) { // WARN fb can be Fooer 49 _ = holdFooer{f: fb} 50 } 51 52 func WrongNoKey(fb FooBarer) { // WARN fb can be Fooer 53 _ = holdFooer{fb} 54 } 55 56 func WrongNoKeyInplace(fb FooBarer) { // WARN fb can be Fooer 57 _ = struct { 58 f Fooer 59 }{fb} 60 } 61 62 func WrongNoKeyMultiple(fb FooBarer) { // WARN fb can be Fooer 63 _ = struct { 64 f Fooer 65 s string 66 }{fb, "bar"} 67 } 68 69 type holdFooerNested holdFooer 70 71 func WrongNoKeyDeep(fb FooBarer) { // WARN fb can be Fooer 72 _ = holdFooerNested{fb} 73 } 74 75 func WrongNoKeyArray(fb FooBarer) { // WARN fb can be Fooer 76 _ = [...]Fooer{fb} 77 } 78 79 func WrongNoKeySlice(fb FooBarer) { // WARN fb can be Fooer 80 _ = []Fooer{fb} 81 } 82 83 func WrongWalkValue(fb FooBarer) { // WARN fb can be Fooer 84 fn := func(f Fooer) Fooer { return f } 85 _ = []Fooer{fn(fb)} 86 }