.gitignore added
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.1.0 / go / analysis / passes / copylock / testdata / src / a / copylock_range.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.0/go/analysis/passes/copylock/testdata/src/a/copylock_range.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.1.0/go/analysis/passes/copylock/testdata/src/a/copylock_range.go
new file mode 100644 (file)
index 0000000..cd95a52
--- /dev/null
@@ -0,0 +1,67 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// This file contains tests for the copylock checker's
+// range statement analysis.
+
+package a
+
+import "sync"
+
+func rangeMutex() {
+       var mu sync.Mutex
+       var i int
+
+       var s []sync.Mutex
+       for range s {
+       }
+       for i = range s {
+       }
+       for i := range s {
+       }
+       for i, _ = range s {
+       }
+       for i, _ := range s {
+       }
+       for _, mu = range s { // want "range var mu copies lock: sync.Mutex"
+       }
+       for _, m := range s { // want "range var m copies lock: sync.Mutex"
+       }
+       for i, mu = range s { // want "range var mu copies lock: sync.Mutex"
+       }
+       for i, m := range s { // want "range var m copies lock: sync.Mutex"
+       }
+
+       var a [3]sync.Mutex
+       for _, m := range a { // want "range var m copies lock: sync.Mutex"
+       }
+
+       var m map[sync.Mutex]sync.Mutex
+       for k := range m { // want "range var k copies lock: sync.Mutex"
+       }
+       for mu, _ = range m { // want "range var mu copies lock: sync.Mutex"
+       }
+       for k, _ := range m { // want "range var k copies lock: sync.Mutex"
+       }
+       for _, mu = range m { // want "range var mu copies lock: sync.Mutex"
+       }
+       for _, v := range m { // want "range var v copies lock: sync.Mutex"
+       }
+
+       var c chan sync.Mutex
+       for range c {
+       }
+       for mu = range c { // want "range var mu copies lock: sync.Mutex"
+       }
+       for v := range c { // want "range var v copies lock: sync.Mutex"
+       }
+
+       // Test non-idents in range variables
+       var t struct {
+               i  int
+               mu sync.Mutex
+       }
+       for t.i, t.mu = range s { // want "range var t.mu copies lock: sync.Mutex"
+       }
+}