From: qiulaidongfeng <2645477756@qq.com> Date: Wed, 13 Aug 2025 14:33:14 +0000 (+0800) Subject: cmd/fix: remove all functionality except for buildtag X-Git-Tag: go1.26rc1~956 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=459b85ccaa30bbce4c22b2779672dfe402a2b2da;p=gostls13.git cmd/fix: remove all functionality except for buildtag For #73605 Change-Id: I4b46b5eb72471c215f2cc208c1b0cdd1fbdbf81a Reviewed-on: https://go-review.googlesource.com/c/go/+/695855 Reviewed-by: Michael Matloob Reviewed-by: Michael Pratt Reviewed-by: Alan Donovan LUCI-TryBot-Result: Go LUCI Auto-Submit: Alan Donovan --- diff --git a/src/cmd/fix/cftype.go b/src/cmd/fix/cftype.go index 04ece9fe5b..3e9f4c5a35 100644 --- a/src/cmd/fix/cftype.go +++ b/src/cmd/fix/cftype.go @@ -6,9 +6,6 @@ package main import ( "go/ast" - "go/token" - "reflect" - "strings" ) func init() { @@ -18,130 +15,11 @@ func init() { var cftypeFix = fix{ name: "cftype", date: "2017-09-27", - f: cftypefix, - desc: `Fixes initializers and casts of C.*Ref and JNI types`, + f: noop, + desc: `Fixes initializers and casts of C.*Ref and JNI types (removed)`, disabled: false, } -// Old state: -// -// type CFTypeRef unsafe.Pointer -// -// New state: -// -// type CFTypeRef uintptr -// -// and similar for other *Ref types. -// This fix finds nils initializing these types and replaces the nils with 0s. -func cftypefix(f *ast.File) bool { - return typefix(f, func(s string) bool { - return strings.HasPrefix(s, "C.") && strings.HasSuffix(s, "Ref") && s != "C.CFAllocatorRef" - }) -} - -// typefix replaces nil with 0 for all nils whose type, when passed to badType, returns true. -func typefix(f *ast.File, badType func(string) bool) bool { - if !imports(f, "C") { - return false - } - typeof, _ := typecheck(&TypeConfig{}, f) - changed := false - - // step 1: Find all the nils with the offending types. - // Compute their replacement. - badNils := map[any]ast.Expr{} - walk(f, func(n any) { - if i, ok := n.(*ast.Ident); ok && i.Name == "nil" && badType(typeof[n]) { - badNils[n] = &ast.BasicLit{ValuePos: i.NamePos, Kind: token.INT, Value: "0"} - } - }) - - // step 2: find all uses of the bad nils, replace them with 0. - // There's no easy way to map from an ast.Expr to all the places that use them, so - // we use reflect to find all such references. - if len(badNils) > 0 { - exprType := reflect.TypeFor[ast.Expr]() - exprSliceType := reflect.TypeFor[[]ast.Expr]() - walk(f, func(n any) { - if n == nil { - return - } - v := reflect.ValueOf(n) - if v.Kind() != reflect.Pointer { - return - } - if v.IsNil() { - return - } - v = v.Elem() - if v.Kind() != reflect.Struct { - return - } - for i := 0; i < v.NumField(); i++ { - f := v.Field(i) - if f.Type() == exprType { - if r := badNils[f.Interface()]; r != nil { - f.Set(reflect.ValueOf(r)) - changed = true - } - } - if f.Type() == exprSliceType { - for j := 0; j < f.Len(); j++ { - e := f.Index(j) - if r := badNils[e.Interface()]; r != nil { - e.Set(reflect.ValueOf(r)) - changed = true - } - } - } - } - }) - } - - // step 3: fix up invalid casts. - // It used to be ok to cast between *unsafe.Pointer and *C.CFTypeRef in a single step. - // Now we need unsafe.Pointer as an intermediate cast. - // (*unsafe.Pointer)(x) where x is type *bad -> (*unsafe.Pointer)(unsafe.Pointer(x)) - // (*bad.type)(x) where x is type *unsafe.Pointer -> (*bad.type)(unsafe.Pointer(x)) - walk(f, func(n any) { - if n == nil { - return - } - // Find pattern like (*a.b)(x) - c, ok := n.(*ast.CallExpr) - if !ok { - return - } - if len(c.Args) != 1 { - return - } - p, ok := c.Fun.(*ast.ParenExpr) - if !ok { - return - } - s, ok := p.X.(*ast.StarExpr) - if !ok { - return - } - t, ok := s.X.(*ast.SelectorExpr) - if !ok { - return - } - pkg, ok := t.X.(*ast.Ident) - if !ok { - return - } - dst := pkg.Name + "." + t.Sel.Name - src := typeof[c.Args[0]] - if badType(dst) && src == "*unsafe.Pointer" || - dst == "unsafe.Pointer" && strings.HasPrefix(src, "*") && badType(src[1:]) { - c.Args[0] = &ast.CallExpr{ - Fun: &ast.SelectorExpr{X: &ast.Ident{Name: "unsafe"}, Sel: &ast.Ident{Name: "Pointer"}}, - Args: []ast.Expr{c.Args[0]}, - } - changed = true - } - }) - - return changed +func noop(f *ast.File) bool { + return false } diff --git a/src/cmd/fix/cftype_test.go b/src/cmd/fix/cftype_test.go deleted file mode 100644 index cde47f28a3..0000000000 --- a/src/cmd/fix/cftype_test.go +++ /dev/null @@ -1,241 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -func init() { - addTestCases(cftypeTests, cftypefix) -} - -var cftypeTests = []testCase{ - { - Name: "cftype.localVariable", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -func f() { - var x C.CFTypeRef = nil - x = nil - x, x = nil, nil -} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -func f() { - var x C.CFTypeRef = 0 - x = 0 - x, x = 0, 0 -} -`, - }, - { - Name: "cftype.globalVariable", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x C.CFTypeRef = nil - -func f() { - x = nil -} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x C.CFTypeRef = 0 - -func f() { - x = 0 -} -`, - }, - { - Name: "cftype.EqualArgument", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x C.CFTypeRef -var y = x == nil -var z = x != nil -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x C.CFTypeRef -var y = x == 0 -var z = x != 0 -`, - }, - { - Name: "cftype.StructField", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -type T struct { - x C.CFTypeRef -} - -var t = T{x: nil} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -type T struct { - x C.CFTypeRef -} - -var t = T{x: 0} -`, - }, - { - Name: "cftype.FunctionArgument", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -func f(x C.CFTypeRef) { -} - -func g() { - f(nil) -} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -func f(x C.CFTypeRef) { -} - -func g() { - f(0) -} -`, - }, - { - Name: "cftype.ArrayElement", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = [3]C.CFTypeRef{nil, nil, nil} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = [3]C.CFTypeRef{0, 0, 0} -`, - }, - { - Name: "cftype.SliceElement", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = []C.CFTypeRef{nil, nil, nil} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = []C.CFTypeRef{0, 0, 0} -`, - }, - { - Name: "cftype.MapKey", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = map[C.CFTypeRef]int{nil: 0} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = map[C.CFTypeRef]int{0: 0} -`, - }, - { - Name: "cftype.MapValue", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = map[int]C.CFTypeRef{0: nil} -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x = map[int]C.CFTypeRef{0: 0} -`, - }, - { - Name: "cftype.Conversion1", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x C.CFTypeRef -var y = (*unsafe.Pointer)(&x) -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x C.CFTypeRef -var y = (*unsafe.Pointer)(unsafe.Pointer(&x)) -`, - }, - { - Name: "cftype.Conversion2", - In: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x unsafe.Pointer -var y = (*C.CFTypeRef)(&x) -`, - Out: `package main - -// typedef const void *CFTypeRef; -import "C" - -var x unsafe.Pointer -var y = (*C.CFTypeRef)(unsafe.Pointer(&x)) -`, - }, -} diff --git a/src/cmd/fix/context.go b/src/cmd/fix/context.go index 1107f4d66c..fe2e095052 100644 --- a/src/cmd/fix/context.go +++ b/src/cmd/fix/context.go @@ -4,10 +4,6 @@ package main -import ( - "go/ast" -) - func init() { register(contextFix) } @@ -15,11 +11,7 @@ func init() { var contextFix = fix{ name: "context", date: "2016-09-09", - f: ctxfix, - desc: `Change imports of golang.org/x/net/context to context`, + f: noop, + desc: `Change imports of golang.org/x/net/context to context (removed)`, disabled: false, } - -func ctxfix(f *ast.File) bool { - return rewriteImport(f, "golang.org/x/net/context", "context") -} diff --git a/src/cmd/fix/context_test.go b/src/cmd/fix/context_test.go deleted file mode 100644 index 935d0d7235..0000000000 --- a/src/cmd/fix/context_test.go +++ /dev/null @@ -1,42 +0,0 @@ -// Copyright 2016 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -func init() { - addTestCases(contextTests, ctxfix) -} - -var contextTests = []testCase{ - { - Name: "context.0", - In: `package main - -import "golang.org/x/net/context" - -var _ = "golang.org/x/net/context" -`, - Out: `package main - -import "context" - -var _ = "golang.org/x/net/context" -`, - }, - { - Name: "context.1", - In: `package main - -import ctx "golang.org/x/net/context" - -var _ = ctx.Background() -`, - Out: `package main - -import ctx "context" - -var _ = ctx.Background() -`, - }, -} diff --git a/src/cmd/fix/egltype.go b/src/cmd/fix/egltype.go index a096db6665..8ba66efb06 100644 --- a/src/cmd/fix/egltype.go +++ b/src/cmd/fix/egltype.go @@ -4,10 +4,6 @@ package main -import ( - "go/ast" -) - func init() { register(eglFixDisplay) register(eglFixConfig) @@ -16,45 +12,15 @@ func init() { var eglFixDisplay = fix{ name: "egl", date: "2018-12-15", - f: eglfixDisp, - desc: `Fixes initializers of EGLDisplay`, + f: noop, + desc: `Fixes initializers of EGLDisplay (removed)`, disabled: false, } -// Old state: -// -// type EGLDisplay unsafe.Pointer -// -// New state: -// -// type EGLDisplay uintptr -// -// This fix finds nils initializing these types and replaces the nils with 0s. -func eglfixDisp(f *ast.File) bool { - return typefix(f, func(s string) bool { - return s == "C.EGLDisplay" - }) -} - var eglFixConfig = fix{ name: "eglconf", date: "2020-05-30", - f: eglfixConfig, - desc: `Fixes initializers of EGLConfig`, + f: noop, + desc: `Fixes initializers of EGLConfig (removed)`, disabled: false, } - -// Old state: -// -// type EGLConfig unsafe.Pointer -// -// New state: -// -// type EGLConfig uintptr -// -// This fix finds nils initializing these types and replaces the nils with 0s. -func eglfixConfig(f *ast.File) bool { - return typefix(f, func(s string) bool { - return s == "C.EGLConfig" - }) -} diff --git a/src/cmd/fix/egltype_test.go b/src/cmd/fix/egltype_test.go deleted file mode 100644 index c44525c053..0000000000 --- a/src/cmd/fix/egltype_test.go +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -import "strings" - -func init() { - addTestCases(eglTestsFor("EGLDisplay"), eglfixDisp) - addTestCases(eglTestsFor("EGLConfig"), eglfixConfig) -} - -func eglTestsFor(tname string) []testCase { - var eglTests = []testCase{ - { - Name: "egl.localVariable", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -func f() { - var x C.$EGLTYPE = nil - x = nil - x, x = nil, nil -} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -func f() { - var x C.$EGLTYPE = 0 - x = 0 - x, x = 0, 0 -} -`, - }, - { - Name: "egl.globalVariable", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x C.$EGLTYPE = nil - -func f() { - x = nil -} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x C.$EGLTYPE = 0 - -func f() { - x = 0 -} -`, - }, - { - Name: "egl.EqualArgument", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x C.$EGLTYPE -var y = x == nil -var z = x != nil -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x C.$EGLTYPE -var y = x == 0 -var z = x != 0 -`, - }, - { - Name: "egl.StructField", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -type T struct { - x C.$EGLTYPE -} - -var t = T{x: nil} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -type T struct { - x C.$EGLTYPE -} - -var t = T{x: 0} -`, - }, - { - Name: "egl.FunctionArgument", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -func f(x C.$EGLTYPE) { -} - -func g() { - f(nil) -} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -func f(x C.$EGLTYPE) { -} - -func g() { - f(0) -} -`, - }, - { - Name: "egl.ArrayElement", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = [3]C.$EGLTYPE{nil, nil, nil} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = [3]C.$EGLTYPE{0, 0, 0} -`, - }, - { - Name: "egl.SliceElement", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = []C.$EGLTYPE{nil, nil, nil} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = []C.$EGLTYPE{0, 0, 0} -`, - }, - { - Name: "egl.MapKey", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = map[C.$EGLTYPE]int{nil: 0} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = map[C.$EGLTYPE]int{0: 0} -`, - }, - { - Name: "egl.MapValue", - In: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = map[int]C.$EGLTYPE{0: nil} -`, - Out: `package main - -// typedef void *$EGLTYPE; -import "C" - -var x = map[int]C.$EGLTYPE{0: 0} -`, - }, - } - for i := range eglTests { - t := &eglTests[i] - t.In = strings.ReplaceAll(t.In, "$EGLTYPE", tname) - t.Out = strings.ReplaceAll(t.Out, "$EGLTYPE", tname) - } - return eglTests -} diff --git a/src/cmd/fix/gotypes.go b/src/cmd/fix/gotypes.go index 6085816ada..987dab5d02 100644 --- a/src/cmd/fix/gotypes.go +++ b/src/cmd/fix/gotypes.go @@ -4,11 +4,6 @@ package main -import ( - "go/ast" - "strconv" -) - func init() { register(gotypesFix) } @@ -16,60 +11,6 @@ func init() { var gotypesFix = fix{ name: "gotypes", date: "2015-07-16", - f: gotypes, - desc: `Change imports of golang.org/x/tools/go/{exact,types} to go/{constant,types}`, -} - -func gotypes(f *ast.File) bool { - fixed := fixGoTypes(f) - if fixGoExact(f) { - fixed = true - } - return fixed -} - -func fixGoTypes(f *ast.File) bool { - return rewriteImport(f, "golang.org/x/tools/go/types", "go/types") -} - -func fixGoExact(f *ast.File) bool { - // This one is harder because the import name changes. - // First find the import spec. - var importSpec *ast.ImportSpec - walk(f, func(n any) { - if importSpec != nil { - return - } - spec, ok := n.(*ast.ImportSpec) - if !ok { - return - } - path, err := strconv.Unquote(spec.Path.Value) - if err != nil { - return - } - if path == "golang.org/x/tools/go/exact" { - importSpec = spec - } - - }) - if importSpec == nil { - return false - } - - // We are about to rename exact.* to constant.*, but constant is a common - // name. See if it will conflict. This is a hack but it is effective. - exists := renameTop(f, "constant", "constant") - suffix := "" - if exists { - suffix = "_" - } - // Now we need to rename all the uses of the import. RewriteImport - // affects renameTop, but not vice versa, so do them in this order. - renameTop(f, "exact", "constant"+suffix) - rewriteImport(f, "golang.org/x/tools/go/exact", "go/constant") - // renameTop will also rewrite the imported package name. Fix that; - // we know it should be missing. - importSpec.Name = nil - return true + f: noop, + desc: `Change imports of golang.org/x/tools/go/{exact,types} to go/{constant,types} (removed)`, } diff --git a/src/cmd/fix/gotypes_test.go b/src/cmd/fix/gotypes_test.go deleted file mode 100644 index 9248fffd24..0000000000 --- a/src/cmd/fix/gotypes_test.go +++ /dev/null @@ -1,89 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -func init() { - addTestCases(gotypesTests, gotypes) -} - -var gotypesTests = []testCase{ - { - Name: "gotypes.0", - In: `package main - -import "golang.org/x/tools/go/types" -import "golang.org/x/tools/go/exact" - -var _ = exact.Kind - -func f() { - _ = exact.MakeBool(true) -} -`, - Out: `package main - -import "go/types" -import "go/constant" - -var _ = constant.Kind - -func f() { - _ = constant.MakeBool(true) -} -`, - }, - { - Name: "gotypes.1", - In: `package main - -import "golang.org/x/tools/go/types" -import foo "golang.org/x/tools/go/exact" - -var _ = foo.Kind - -func f() { - _ = foo.MakeBool(true) -} -`, - Out: `package main - -import "go/types" -import "go/constant" - -var _ = foo.Kind - -func f() { - _ = foo.MakeBool(true) -} -`, - }, - { - Name: "gotypes.0", - In: `package main - -import "golang.org/x/tools/go/types" -import "golang.org/x/tools/go/exact" - -var _ = exact.Kind -var constant = 23 // Use of new package name. - -func f() { - _ = exact.MakeBool(true) -} -`, - Out: `package main - -import "go/types" -import "go/constant" - -var _ = constant_.Kind -var constant = 23 // Use of new package name. - -func f() { - _ = constant_.MakeBool(true) -} -`, - }, -} diff --git a/src/cmd/fix/jnitype.go b/src/cmd/fix/jnitype.go index 111be8e70c..bee38e6720 100644 --- a/src/cmd/fix/jnitype.go +++ b/src/cmd/fix/jnitype.go @@ -4,10 +4,6 @@ package main -import ( - "go/ast" -) - func init() { register(jniFix) } @@ -15,55 +11,7 @@ func init() { var jniFix = fix{ name: "jni", date: "2017-12-04", - f: jnifix, - desc: `Fixes initializers of JNI's jobject and subtypes`, + f: noop, + desc: `Fixes initializers of JNI's jobject and subtypes (removed)`, disabled: false, } - -// Old state: -// -// type jobject *_jobject -// -// New state: -// -// type jobject uintptr -// -// and similar for subtypes of jobject. -// This fix finds nils initializing these types and replaces the nils with 0s. -func jnifix(f *ast.File) bool { - return typefix(f, func(s string) bool { - switch s { - case "C.jobject": - return true - case "C.jclass": - return true - case "C.jthrowable": - return true - case "C.jstring": - return true - case "C.jarray": - return true - case "C.jbooleanArray": - return true - case "C.jbyteArray": - return true - case "C.jcharArray": - return true - case "C.jshortArray": - return true - case "C.jintArray": - return true - case "C.jlongArray": - return true - case "C.jfloatArray": - return true - case "C.jdoubleArray": - return true - case "C.jobjectArray": - return true - case "C.jweak": - return true - } - return false - }) -} diff --git a/src/cmd/fix/jnitype_test.go b/src/cmd/fix/jnitype_test.go deleted file mode 100644 index ecf01408c7..0000000000 --- a/src/cmd/fix/jnitype_test.go +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2017 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -func init() { - addTestCases(jniTests, jnifix) -} - -var jniTests = []testCase{ - { - Name: "jni.localVariable", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -func f() { - var x C.jobject = nil - x = nil - x, x = nil, nil -} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -func f() { - var x C.jobject = 0 - x = 0 - x, x = 0, 0 -} -`, - }, - { - Name: "jni.globalVariable", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x C.jobject = nil - -func f() { - x = nil -} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x C.jobject = 0 - -func f() { - x = 0 -} -`, - }, - { - Name: "jni.EqualArgument", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x C.jobject -var y = x == nil -var z = x != nil -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x C.jobject -var y = x == 0 -var z = x != 0 -`, - }, - { - Name: "jni.StructField", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -type T struct { - x C.jobject -} - -var t = T{x: nil} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -type T struct { - x C.jobject -} - -var t = T{x: 0} -`, - }, - { - Name: "jni.FunctionArgument", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -func f(x C.jobject) { -} - -func g() { - f(nil) -} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -func f(x C.jobject) { -} - -func g() { - f(0) -} -`, - }, - { - Name: "jni.ArrayElement", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = [3]C.jobject{nil, nil, nil} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = [3]C.jobject{0, 0, 0} -`, - }, - { - Name: "jni.SliceElement", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = []C.jobject{nil, nil, nil} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = []C.jobject{0, 0, 0} -`, - }, - { - Name: "jni.MapKey", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = map[C.jobject]int{nil: 0} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = map[C.jobject]int{0: 0} -`, - }, - { - Name: "jni.MapValue", - In: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = map[int]C.jobject{0: nil} -`, - Out: `package main - -// typedef struct _jobject* jobject; -import "C" - -var x = map[int]C.jobject{0: 0} -`, - }, -} diff --git a/src/cmd/fix/netipv6zone.go b/src/cmd/fix/netipv6zone.go index c27b4b4529..75d2150e43 100644 --- a/src/cmd/fix/netipv6zone.go +++ b/src/cmd/fix/netipv6zone.go @@ -4,11 +4,6 @@ package main -import ( - "go/ast" - "slices" -) - func init() { register(netipv6zoneFix) } @@ -16,56 +11,9 @@ func init() { var netipv6zoneFix = fix{ name: "netipv6zone", date: "2012-11-26", - f: netipv6zone, - desc: `Adapt element key to IPAddr, UDPAddr or TCPAddr composite literals. + f: noop, + desc: `Adapt element key to IPAddr, UDPAddr or TCPAddr composite literals (removed). https://codereview.appspot.com/6849045/ `, } - -func netipv6zone(f *ast.File) bool { - if !imports(f, "net") { - return false - } - - fixed := false - walk(f, func(n any) { - cl, ok := n.(*ast.CompositeLit) - if !ok { - return - } - se, ok := cl.Type.(*ast.SelectorExpr) - if !ok { - return - } - if !isTopName(se.X, "net") || se.Sel == nil { - return - } - switch ss := se.Sel.String(); ss { - case "IPAddr", "UDPAddr", "TCPAddr": - for i, e := range cl.Elts { - if _, ok := e.(*ast.KeyValueExpr); ok { - break - } - switch i { - case 0: - cl.Elts[i] = &ast.KeyValueExpr{ - Key: ast.NewIdent("IP"), - Value: e, - } - case 1: - if elit, ok := e.(*ast.BasicLit); ok && elit.Value == "0" { - cl.Elts = slices.Delete(cl.Elts, i, i+1) - } else { - cl.Elts[i] = &ast.KeyValueExpr{ - Key: ast.NewIdent("Port"), - Value: e, - } - } - } - fixed = true - } - } - }) - return fixed -} diff --git a/src/cmd/fix/netipv6zone_test.go b/src/cmd/fix/netipv6zone_test.go deleted file mode 100644 index 5b8d964d41..0000000000 --- a/src/cmd/fix/netipv6zone_test.go +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -func init() { - addTestCases(netipv6zoneTests, netipv6zone) -} - -var netipv6zoneTests = []testCase{ - { - Name: "netipv6zone.0", - In: `package main - -import "net" - -func f() net.Addr { - a := &net.IPAddr{ip1} - sub(&net.UDPAddr{ip2, 12345}) - c := &net.TCPAddr{IP: ip3, Port: 54321} - d := &net.TCPAddr{ip4, 0} - p := 1234 - e := &net.TCPAddr{ip4, p} - return &net.TCPAddr{ip5}, nil -} -`, - Out: `package main - -import "net" - -func f() net.Addr { - a := &net.IPAddr{IP: ip1} - sub(&net.UDPAddr{IP: ip2, Port: 12345}) - c := &net.TCPAddr{IP: ip3, Port: 54321} - d := &net.TCPAddr{IP: ip4} - p := 1234 - e := &net.TCPAddr{IP: ip4, Port: p} - return &net.TCPAddr{IP: ip5}, nil -} -`, - }, -} diff --git a/src/cmd/fix/printerconfig.go b/src/cmd/fix/printerconfig.go index bad6953196..f9e49d7c0b 100644 --- a/src/cmd/fix/printerconfig.go +++ b/src/cmd/fix/printerconfig.go @@ -4,8 +4,6 @@ package main -import "go/ast" - func init() { register(printerconfigFix) } @@ -13,49 +11,6 @@ func init() { var printerconfigFix = fix{ name: "printerconfig", date: "2012-12-11", - f: printerconfig, - desc: `Add element keys to Config composite literals.`, -} - -func printerconfig(f *ast.File) bool { - if !imports(f, "go/printer") { - return false - } - - fixed := false - walk(f, func(n any) { - cl, ok := n.(*ast.CompositeLit) - if !ok { - return - } - se, ok := cl.Type.(*ast.SelectorExpr) - if !ok { - return - } - if !isTopName(se.X, "printer") || se.Sel == nil { - return - } - - if ss := se.Sel.String(); ss == "Config" { - for i, e := range cl.Elts { - if _, ok := e.(*ast.KeyValueExpr); ok { - break - } - switch i { - case 0: - cl.Elts[i] = &ast.KeyValueExpr{ - Key: ast.NewIdent("Mode"), - Value: e, - } - case 1: - cl.Elts[i] = &ast.KeyValueExpr{ - Key: ast.NewIdent("Tabwidth"), - Value: e, - } - } - fixed = true - } - } - }) - return fixed + f: noop, + desc: `Add element keys to Config composite literals (removed).`, } diff --git a/src/cmd/fix/printerconfig_test.go b/src/cmd/fix/printerconfig_test.go deleted file mode 100644 index e485c137b7..0000000000 --- a/src/cmd/fix/printerconfig_test.go +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright 2012 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package main - -func init() { - addTestCases(printerconfigTests, printerconfig) -} - -var printerconfigTests = []testCase{ - { - Name: "printerconfig.0", - In: `package main - -import "go/printer" - -func f() printer.Config { - b := printer.Config{0, 8} - c := &printer.Config{0} - d := &printer.Config{Tabwidth: 8, Mode: 0} - return printer.Config{0, 8} -} -`, - Out: `package main - -import "go/printer" - -func f() printer.Config { - b := printer.Config{Mode: 0, Tabwidth: 8} - c := &printer.Config{Mode: 0} - d := &printer.Config{Tabwidth: 8, Mode: 0} - return printer.Config{Mode: 0, Tabwidth: 8} -} -`, - }, -}