]> Cypherpunks repositories - gostls13.git/commitdiff
gofix: httpserver - rewrite rw.SetHeader to rw.Header.Set
authorAndrew Gerrand <adg@golang.org>
Wed, 16 Mar 2011 22:59:18 +0000 (09:59 +1100)
committerAndrew Gerrand <adg@golang.org>
Wed, 16 Mar 2011 22:59:18 +0000 (09:59 +1100)
R=rsc
CC=golang-dev
https://golang.org/cl/4271048

src/cmd/gofix/httpserver.go
src/cmd/gofix/httpserver_test.go

index 88996532b42ff3eae89866dd73cbc6f992411c84..659a259267f12e337bb53b8c6c7584db555d760b 100644 (file)
@@ -51,7 +51,7 @@ func httpserver(f *ast.File) bool {
 
                        // Look for w.UsingTLS() and w.Remoteaddr().
                        call, ok := n.(*ast.CallExpr)
-                       if !ok || len(call.Args) != 0 {
+                       if !ok || (len(call.Args) != 0 && len(call.Args) != 2) {
                                return
                        }
                        sel, ok := call.Fun.(*ast.SelectorExpr)
@@ -102,6 +102,21 @@ func httpserver(f *ast.File) bool {
                                        Sel: ast.NewIdent("RemoteAddr"),
                                }
                                fixed = true
+                       case "SetHeader":
+                               // replace w.SetHeader with w.Header().Set
+                               // or w.Header().Del if second argument is ""
+                               sel.X = &ast.CallExpr{
+                                       Fun: &ast.SelectorExpr{
+                                               X:   ast.NewIdent(w.String()),
+                                               Sel: ast.NewIdent("Header"),
+                                       },
+                               }
+                               sel.Sel = ast.NewIdent("Set")
+                               if len(call.Args) == 2 && isEmptyString(call.Args[1]) {
+                                       sel.Sel = ast.NewIdent("Del")
+                                       call.Args = call.Args[:1]
+                               }
+                               fixed = true
                        }
                })
        }
index 2866ad896d5f264a9713fb5bddb3deb668ccc813..89bb4fa710f06c06fbaa11fac897883e96f5b9ad 100644 (file)
@@ -16,6 +16,8 @@ var httpserverTests = []testCase{
 import "http"
 
 func f(xyz http.ResponseWriter, abc *http.Request, b string) {
+       xyz.SetHeader("foo", "bar")
+       xyz.SetHeader("baz", "")
        xyz.Hijack()
        xyz.Flush()
        go xyz.Hijack()
@@ -33,6 +35,8 @@ func f(xyz http.ResponseWriter, abc *http.Request, b string) {
 import "http"
 
 func f(xyz http.ResponseWriter, abc *http.Request, b string) {
+       xyz.Header().Set("foo", "bar")
+       xyz.Header().Del("baz")
        xyz.(http.Hijacker).Hijack()
        xyz.(http.Flusher).Flush()
        go xyz.(http.Hijacker).Hijack()