From 69905c62139546c178156cde13f379c9b6eac0cc Mon Sep 17 00:00:00 2001 From: Robert Hencke Date: Sun, 26 Jun 2011 08:48:53 +1000 Subject: [PATCH] gofix: fixes for sort changes Fixes #1969. R=gri, rsc, r CC=golang-dev https://golang.org/cl/4634076 --- src/cmd/gofix/Makefile | 9 +++--- src/cmd/gofix/sortslice.go | 50 +++++++++++++++++++++++++++++++++ src/cmd/gofix/sortslice_test.go | 35 +++++++++++++++++++++++ 3 files changed, 90 insertions(+), 4 deletions(-) create mode 100644 src/cmd/gofix/sortslice.go create mode 100644 src/cmd/gofix/sortslice_test.go diff --git a/src/cmd/gofix/Makefile b/src/cmd/gofix/Makefile index b157649e87..60035e65e0 100644 --- a/src/cmd/gofix/Makefile +++ b/src/cmd/gofix/Makefile @@ -7,15 +7,16 @@ include ../../Make.inc TARG=gofix GOFILES=\ fix.go\ - netdial.go\ - main.go\ - oserrorstring.go\ - osopen.go\ httpfinalurl.go\ httpheaders.go\ httpserver.go\ + main.go\ + netdial.go\ + oserrorstring.go\ + osopen.go\ procattr.go\ reflect.go\ + sortslice.go\ typecheck.go\ include ../../Make.cmd diff --git a/src/cmd/gofix/sortslice.go b/src/cmd/gofix/sortslice.go new file mode 100644 index 0000000000..b9c108b5a1 --- /dev/null +++ b/src/cmd/gofix/sortslice.go @@ -0,0 +1,50 @@ +// Copyright 2011 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 ( + "go/ast" +) + +func init() { + register(fix{ + "sortslice", + sortslice, + `Adapt code from sort.[Float64|Int|String]Array to sort.[Float64|Int|String]Slice. + +http://codereview.appspot.com/4602054 +http://codereview.appspot.com/4639041 +`, + }) +} + + +func sortslice(f *ast.File) (fixed bool) { + if !imports(f, "sort") { + return + } + + walk(f, func(n interface{}) { + s, ok := n.(*ast.SelectorExpr) + if !ok || !isTopName(s.X, "sort") { + return + } + + switch s.Sel.String() { + case "Float64Array": + s.Sel.Name = "Float64Slice" + case "IntArray": + s.Sel.Name = "IntSlice" + case "StringArray": + s.Sel.Name = "StringSlice" + default: + return + } + + fixed = true + }) + + return +} diff --git a/src/cmd/gofix/sortslice_test.go b/src/cmd/gofix/sortslice_test.go new file mode 100644 index 0000000000..404feb26fa --- /dev/null +++ b/src/cmd/gofix/sortslice_test.go @@ -0,0 +1,35 @@ +// Copyright 2011 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(sortsliceTests) +} + +var sortsliceTests = []testCase{ + { + Name: "sortslice.0", + In: `package main + +import ( + "sort" +) + +var _ = sort.Float64Array +var _ = sort.IntArray +var _ = sort.StringArray +`, + Out: `package main + +import ( + "sort" +) + +var _ = sort.Float64Slice +var _ = sort.IntSlice +var _ = sort.StringSlice +`, + }, +} -- 2.48.1