--- /dev/null
+package a
+
+import (
+ "log"
+ "net/http"
+)
+
+func goodHTTPGet() {
+ res, err := http.Get("http://foo.com")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer res.Body.Close()
+}
+
+func badHTTPGet() {
+ res, err := http.Get("http://foo.com")
+ defer res.Body.Close() // want "using res before checking for errors"
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func badHTTPHead() {
+ res, err := http.Head("http://foo.com")
+ defer res.Body.Close() // want "using res before checking for errors"
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func goodClientGet() {
+ client := http.DefaultClient
+ res, err := client.Get("http://foo.com")
+ if err != nil {
+ log.Fatal(err)
+ }
+ defer res.Body.Close()
+}
+
+func badClientPtrGet() {
+ client := http.DefaultClient
+ resp, err := client.Get("http://foo.com")
+ defer resp.Body.Close() // want "using resp before checking for errors"
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func badClientGet() {
+ client := http.Client{}
+ resp, err := client.Get("http://foo.com")
+ defer resp.Body.Close() // want "using resp before checking for errors"
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func badClientPtrDo() {
+ client := http.DefaultClient
+ req, err := http.NewRequest("GET", "http://foo.com", nil)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ resp, err := client.Do(req)
+ defer resp.Body.Close() // want "using resp before checking for errors"
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+
+func badClientDo() {
+ var client http.Client
+ req, err := http.NewRequest("GET", "http://foo.com", nil)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ resp, err := client.Do(req)
+ defer resp.Body.Close() // want "using resp before checking for errors"
+ if err != nil {
+ log.Fatal(err)
+ }
+}