.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.1.1 / staticcheck / testdata / src / CheckEvenSliceLength / CheckEvenSliceLength.go
1 package pkg
2
3 import "strings"
4
5 func fnVariadic(s string, args ...interface{}) { // want args:"needs even elements"
6         if len(args)%2 != 0 {
7                 panic("I'm one of those annoying logging APIs")
8         }
9 }
10
11 func fnSlice(s string, args []interface{}) { // want args:"needs even elements"
12         if len(args)%2 != 0 {
13                 panic("I'm one of those annoying logging APIs")
14         }
15 }
16
17 func fnIndirect(s string, args ...interface{}) { // want args:"needs even elements"
18         fnSlice(s, args)
19 }
20
21 func fn2(bleh []interface{}, arr1 [3]interface{}) { // want bleh:"needs even elements"
22         fnVariadic("%s", 1, 2, 3) // want `variadic argument "args".+ but has 3 elements`
23         args := []interface{}{1, 2, 3}
24         fnVariadic("", args...)     // want `variadic argument "args".+ but has 3 elements`
25         fnVariadic("", args[:1]...) // want `variadic argument "args".+ but has 1 elements`
26         fnVariadic("", args[:2]...)
27         fnVariadic("", args[0:1]...) // want `variadic argument "args".+ but has 1 elements`
28         fnVariadic("", args[0:]...)  // want `variadic argument "args".+ but has 3 elements`
29         fnVariadic("", args[:]...)   // want `variadic argument "args".+ but has 3 elements`
30         fnVariadic("", bleh...)
31         fnVariadic("", bleh[:1]...)  // want `variadic argument "args".+ but has 1 elements`
32         fnVariadic("", bleh[0:1]...) // want `variadic argument "args".+ but has 1 elements`
33         fnVariadic("", bleh[0:]...)
34         fnVariadic("", bleh[:]...)
35         fnVariadic("", bleh)                      // want `variadic argument "args".+ but has 1 elements`
36         fnVariadic("", make([]interface{}, 3)...) // want `variadic argument "args".+ but has 3 elements`
37         fnVariadic("", make([]interface{}, 4)...)
38         var arr2 [3]interface{}
39         fnVariadic("", arr1[:]...) // want `variadic argument "args".+ but has 3 elements`
40         fnVariadic("", arr2[:]...) // want `variadic argument "args".+ but has 3 elements`
41
42         fnSlice("", []interface{}{1, 2, 3}) // want `argument "args".+ but has 3 elements`
43         fnSlice("", []interface{}{1, 2, 3, 4})
44
45         fnIndirect("%s", 1, 2, 3) // want `argument "args".+ but has 3 elements`
46         fnIndirect("%s", 1, 2)
47
48         strings.NewReplacer("one") // want `variadic argument "oldnew".+ but has 1 elements`
49         strings.NewReplacer("one", "two")
50 }
51
52 func fn3() {
53         args := []interface{}{""}
54         if true {
55                 fnSlice("", args) // want `but has 1 element`
56         }
57 }