Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.0.1-2020.1.5 / staticcheck / testdata / src / CheckUnreadVariableValues / CheckUnreadVariableValues.go
1 package pkg
2
3 import "fmt"
4
5 func fn1() {
6         var x int
7         x = gen() // want `this value of x is never used`
8         x = gen()
9         println(x)
10
11         var y int
12         if true {
13                 y = gen() // want `this value of y is never used`
14         }
15         y = gen()
16         println(y)
17 }
18
19 func gen() int {
20         println() // make it unpure
21         return 0
22 }
23
24 func fn2() {
25         x, y := gen(), gen() // want `this value of x is never used` `this value of y is never used`
26         x, y = gen(), gen()
27         println(x, y)
28 }
29
30 func fn3() {
31         x := uint32(0)
32         if true {
33                 x = 1
34         } else {
35                 x = 2
36         }
37         println(x)
38 }
39
40 func gen2() (int, int) {
41         println()
42         return 0, 0
43 }
44
45 func fn4() {
46         x, y := gen2() // want `this value of x is never used`
47         println(y)
48         x, y = gen2() // want `this value of x is never used` `this value of y is never used`
49         x, _ = gen2() // want `this value of x is never used`
50         x, y = gen2()
51         println(x, y)
52 }
53
54 func fn5(m map[string]string) {
55         v, ok := m[""] // want `this value of v is never used` `this value of ok is never used`
56         v, ok = m[""]
57         println(v, ok)
58 }
59
60 func fn6() {
61         x := gen()
62         // Do not report variables if they've been assigned to the blank identifier
63         _ = x
64 }
65
66 func fn7() {
67         func() {
68                 var x int
69                 x = gen() // want `this value of x is never used`
70                 x = gen()
71                 println(x)
72         }()
73 }
74
75 func fn() int { println(); return 0 }
76
77 var y = func() {
78         v := fn() // want `never used`
79         v = fn()
80         println(v)
81 }
82
83 func fn8() {
84         x := gen()
85         switch x {
86         }
87
88         y := gen() // want `this value of y is never used`
89         y = gen()
90         switch y {
91         }
92
93         z, _ := gen2()
94         switch z {
95         }
96
97         _, a := gen2()
98         switch a {
99         }
100
101         b, c := gen2() // want `this value of b is never used`
102         println(c)
103         b, c = gen2() // want `this value of c is never used`
104         switch b {
105         }
106 }
107
108 func fn9() {
109         xs := []int{}
110         for _, x := range xs {
111                 foo, err := work(x) // want `this value of foo is never used`
112                 if err != nil {
113                         return
114                 }
115                 if !foo {
116                         continue
117                 }
118         }
119 }
120
121 func work(int) (bool, error) { return false, nil }
122
123 func resolveWeakTypes(types []int) {
124         for i := range types {
125                 runEnd := findRunLimit(i)
126
127                 if true {
128                         _ = runEnd
129                 }
130                 i = runEnd // want `this value of i is never used`
131         }
132 }
133
134 func findRunLimit(int) int { return 0 }
135
136 func fn10() {
137         slice := []string(nil)
138         if true {
139                 slice = []string{"1", "2"}
140         } else {
141                 slice = []string{"3", "4"}
142         }
143         fmt.Println(slice)
144 }