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 / CheckCyclicFinalizer / CheckCyclicFinalizer.go
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/staticcheck/testdata/src/CheckCyclicFinalizer/CheckCyclicFinalizer.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/staticcheck/testdata/src/CheckCyclicFinalizer/CheckCyclicFinalizer.go
new file mode 100644 (file)
index 0000000..2aad2e3
--- /dev/null
@@ -0,0 +1,22 @@
+package pkg
+
+import (
+       "fmt"
+       "runtime"
+)
+
+func fn() {
+       var x *int
+       foo := func(y *int) { fmt.Println(x) }
+       runtime.SetFinalizer(x, foo) // want `the finalizer closes over the object, preventing the finalizer from ever running \(at .+:10:9`
+       runtime.SetFinalizer(x, nil)
+       runtime.SetFinalizer(x, func(_ *int) { // want `the finalizer closes over the object, preventing the finalizer from ever running \(at .+:13:26`
+               fmt.Println(x)
+       })
+
+       foo = func(y *int) { fmt.Println(y) }
+       runtime.SetFinalizer(x, foo)
+       runtime.SetFinalizer(x, func(y *int) {
+               fmt.Println(y)
+       })
+}