--- /dev/null
+package fn
+
+import "time"
+
+func fn1() {
+ t := time.NewTimer(time.Second)
+ t.Reset(time.Second)
+}
+
+func fn2() {
+ t := time.NewTimer(time.Second)
+ _ = t.Reset(time.Second)
+}
+
+func fn3() {
+ t := time.NewTimer(time.Second)
+ println(t.Reset(time.Second))
+}
+
+func fn4() {
+ t := time.NewTimer(time.Second)
+ if t.Reset(time.Second) {
+ println("x")
+ }
+}
+
+func fn5() {
+ t := time.NewTimer(time.Second)
+ if t.Reset(time.Second) { // want `it is not possible to use Reset's return value correctly`
+ <-t.C
+ }
+}
+
+func fn6(x bool) {
+ // Not matched because we don't support complex boolean
+ // expressions
+ t := time.NewTimer(time.Second)
+ if t.Reset(time.Second) || x {
+ <-t.C
+ }
+}
+
+func fn7(x bool) {
+ // Not matched because we don't analyze that deeply
+ t := time.NewTimer(time.Second)
+ y := t.Reset(2 * time.Second)
+ z := x || y
+ println(z)
+ if z {
+ <-t.C
+ }
+}
+
+func fn8() {
+ t := time.NewTimer(time.Second)
+ abc := t.Reset(time.Second) // want `it is not possible to use Reset's return value correctly`
+ if abc {
+ <-t.C
+ }
+}
+
+func fn9() {
+ t := time.NewTimer(time.Second)
+ if t.Reset(time.Second) {
+ println("x")
+ }
+ <-t.C
+}
+
+func fn10() {
+ t := time.NewTimer(time.Second)
+ if !t.Reset(time.Second) { // want `it is not possible to use Reset's return value correctly`
+ <-t.C
+ }
+}
+
+func fn11(ch chan int) {
+ t := time.NewTimer(time.Second)
+ if !t.Reset(time.Second) {
+ <-ch
+ }
+}