From 6d93de2c110f66457f103c33ba496ff2e2bf33af Mon Sep 17 00:00:00 2001 From: Benson Margulies Date: Thu, 13 Jun 2024 22:47:18 +0000 Subject: [PATCH] slices: add documentation on incomparable items in SortFunc Change-Id: Ib289008c0e9b5e83c37c9b6b316f3f5de8ac339a Reviewed-on: https://go-review.googlesource.com/c/go/+/592617 LUCI-TryBot-Result: Go LUCI Reviewed-by: Ian Lance Taylor Auto-Submit: Ian Lance Taylor --- src/slices/sort.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/slices/sort.go b/src/slices/sort.go index 4c20a2943c..f713ffe094 100644 --- a/src/slices/sort.go +++ b/src/slices/sort.go @@ -21,10 +21,12 @@ func Sort[S ~[]E, E cmp.Ordered](x S) { // SortFunc sorts the slice x in ascending order as determined by the cmp // function. This sort is not guaranteed to be stable. // cmp(a, b) should return a negative number when a < b, a positive number when -// a > b and zero when a == b. +// a > b and zero when a == b or a and b are incomparable in the sense of +// a strict weak ordering. // // SortFunc requires that cmp is a strict weak ordering. // See https://en.wikipedia.org/wiki/Weak_ordering#Strict_weak_orderings. +// The function should return 0 for incomparable items. func SortFunc[S ~[]E, E any](x S, cmp func(a, b E) int) { n := len(x) pdqsortCmpFunc(x, 0, n, bits.Len(uint(n)), cmp)