.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / honnef.co / go / tools@v0.1.1 / staticcheck / testdata / src / CheckUnreadVariableValues / CheckUnreadVariableValues.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.1.1/staticcheck/testdata/src/CheckUnreadVariableValues/CheckUnreadVariableValues.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.1.1/staticcheck/testdata/src/CheckUnreadVariableValues/CheckUnreadVariableValues.go
new file mode 100644 (file)
index 0000000..da2d1c5
--- /dev/null
@@ -0,0 +1,144 @@
+package pkg
+
+import "fmt"
+
+func fn1() {
+       var x int
+       x = gen() // want `this value of x is never used`
+       x = gen()
+       println(x)
+
+       var y int
+       if true {
+               y = gen() // want `this value of y is never used`
+       }
+       y = gen()
+       println(y)
+}
+
+func gen() int {
+       println() // make it unpure
+       return 0
+}
+
+func fn2() {
+       x, y := gen(), gen() // want `this value of x is never used` `this value of y is never used`
+       x, y = gen(), gen()
+       println(x, y)
+}
+
+func fn3() {
+       x := uint32(0)
+       if true {
+               x = 1
+       } else {
+               x = 2
+       }
+       println(x)
+}
+
+func gen2() (int, int) {
+       println()
+       return 0, 0
+}
+
+func fn4() {
+       x, y := gen2() // want `this value of x is never used`
+       println(y)
+       x, y = gen2() // want `this value of x is never used` `this value of y is never used`
+       x, _ = gen2() // want `this value of x is never used`
+       x, y = gen2()
+       println(x, y)
+}
+
+func fn5(m map[string]string) {
+       v, ok := m[""] // want `this value of v is never used` `this value of ok is never used`
+       v, ok = m[""]
+       println(v, ok)
+}
+
+func fn6() {
+       x := gen()
+       // Do not report variables if they've been assigned to the blank identifier
+       _ = x
+}
+
+func fn7() {
+       func() {
+               var x int
+               x = gen() // want `this value of x is never used`
+               x = gen()
+               println(x)
+       }()
+}
+
+func fn() int { println(); return 0 }
+
+var y = func() {
+       v := fn() // want `never used`
+       v = fn()
+       println(v)
+}
+
+func fn8() {
+       x := gen()
+       switch x {
+       }
+
+       y := gen() // want `this value of y is never used`
+       y = gen()
+       switch y {
+       }
+
+       z, _ := gen2()
+       switch z {
+       }
+
+       _, a := gen2()
+       switch a {
+       }
+
+       b, c := gen2() // want `this value of b is never used`
+       println(c)
+       b, c = gen2() // want `this value of c is never used`
+       switch b {
+       }
+}
+
+func fn9() {
+       xs := []int{}
+       for _, x := range xs {
+               foo, err := work(x) // want `this value of foo is never used`
+               if err != nil {
+                       return
+               }
+               if !foo {
+                       continue
+               }
+       }
+}
+
+func work(int) (bool, error) { return false, nil }
+
+func resolveWeakTypes(types []int) {
+       for i := range types {
+               runEnd := findRunLimit(i)
+
+               if true {
+                       _ = runEnd
+               }
+               i = runEnd // want `this value of i is never used`
+       }
+}
+
+func findRunLimit(int) int { return 0 }
+
+func fn10() {
+       slice := []string(nil)
+       if true {
+               slice = []string{"1", "2"}
+       } else {
+               slice = []string{"3", "4"}
+       }
+       fmt.Println(slice)
+}