honnef.co/go/tools@v0.4.7/staticcheck/testdata/src/example.com/CheckCyclicFinalizer/CheckCyclicFinalizer.go (about) 1 package pkg 2 3 import ( 4 "fmt" 5 "runtime" 6 ) 7 8 func fn() { 9 var x *int 10 foo := func(y *int) { fmt.Println(x) } 11 runtime.SetFinalizer(x, foo) //@ diag(re`the finalizer closes over the object, preventing the finalizer from ever running \(at .+:10:9`) 12 runtime.SetFinalizer(x, nil) 13 runtime.SetFinalizer(x, func(_ *int) { //@ diag(re`the finalizer closes over the object, preventing the finalizer from ever running \(at .+:13:26`) 14 fmt.Println(x) 15 }) 16 17 foo = func(y *int) { fmt.Println(y) } 18 runtime.SetFinalizer(x, foo) 19 runtime.SetFinalizer(x, func(y *int) { 20 fmt.Println(y) 21 }) 22 }