mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/internal/obj: add SortSlice
sort.Slice was added in Go 1.8. It's nice to use, and faster than sort.Sort, so it'd be nice to be able to use it in the toolchain. This CL adds obj.SortSlice, which is sort.Slice, but with a slower fallback version for bootstrapping. This CL also includes a single demo+test use. Change-Id: I2accc60b61f8e48c8ab4f1a63473e3b87af9b691 Reviewed-on: https://go-review.googlesource.com/40114 Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
d6dd7ce1c5
commit
826a09cd65
4 changed files with 52 additions and 15 deletions
|
|
@ -6,12 +6,12 @@ package gc
|
|||
|
||||
import (
|
||||
"cmd/compile/internal/types"
|
||||
"cmd/internal/obj"
|
||||
"reflect"
|
||||
"sort"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestSortingByMethodNameAndPackagePath(t *testing.T) {
|
||||
func TestSortingBySigLT(t *testing.T) {
|
||||
data := []*Sig{
|
||||
&Sig{name: "b", pkg: &types.Pkg{Path: "abc"}},
|
||||
&Sig{name: "b", pkg: nil},
|
||||
|
|
@ -38,11 +38,10 @@ func TestSortingByMethodNameAndPackagePath(t *testing.T) {
|
|||
if reflect.DeepEqual(data, want) {
|
||||
t.Fatal("data must be shuffled")
|
||||
}
|
||||
sort.Sort(byMethodNameAndPackagePath(data))
|
||||
obj.SortSlice(data, func(i, j int) bool { return siglt(data[i], data[j]) })
|
||||
if !reflect.DeepEqual(data, want) {
|
||||
t.Logf("want: %#v", want)
|
||||
t.Logf("data: %#v", data)
|
||||
t.Errorf("sorting failed")
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue