--- /dev/null
+package pkg
+
+import (
+ "sync"
+ "unsafe"
+)
+
+type T1 struct {
+ x int
+}
+
+type T2 struct {
+ x int
+ y int
+}
+
+func fn() {
+ s := []int{}
+
+ v := sync.Pool{}
+ v.Put(s) // want `argument should be pointer-like`
+ v.Put(&s)
+ v.Put(T1{}) // want `argument should be pointer-like`
+ v.Put(T2{}) // want `argument should be pointer-like`
+
+ p := &sync.Pool{}
+ p.Put(s) // want `argument should be pointer-like`
+ p.Put(&s)
+
+ var i interface{}
+ p.Put(i)
+
+ var up unsafe.Pointer
+ p.Put(up)
+
+ var basic int
+ p.Put(basic) // want `argument should be pointer-like`
+}