@@ -806,7 +806,7 @@ export function sortAndDeduplicate(array: readonly string[]): SortedReadonlyArra
806806export function sortAndDeduplicate < T > ( array : readonly T [ ] , comparer : Comparer < T > , equalityComparer ?: EqualityComparer < T > ) : SortedReadonlyArray < T > ;
807807/** @internal */
808808export function sortAndDeduplicate < T > ( array : readonly T [ ] , comparer ?: Comparer < T > , equalityComparer ?: EqualityComparer < T > ) : SortedReadonlyArray < T > {
809- return deduplicateSorted ( sort ( array , comparer ) , equalityComparer ?? comparer ?? compareStringsCaseSensitive as any as Comparer < T > ) ;
809+ return deduplicateSorted ( toSorted ( array , comparer ) , equalityComparer ?? comparer ?? compareStringsCaseSensitive as any as Comparer < T > ) ;
810810}
811811
812812/** @internal */
@@ -1035,12 +1035,12 @@ function stableSortIndices<T>(array: readonly T[], indices: number[], comparer:
10351035}
10361036
10371037/**
1038- * Returns a new sorted array.
1038+ * Returns a new sorted array. This sort is stable, meaning elements equal to each other maintain their relative position in the array.
10391039 *
10401040 * @internal
10411041 */
1042- export function sort < T > ( array : readonly T [ ] , comparer ?: Comparer < T > ) : SortedReadonlyArray < T > {
1043- return ( array . length === 0 ? array : array . slice ( ) . sort ( comparer ) ) as SortedReadonlyArray < T > ;
1042+ export function toSorted < T > ( array : readonly T [ ] , comparer ?: Comparer < T > ) : SortedReadonlyArray < T > {
1043+ return ( array . length === 0 ? emptyArray : array . slice ( ) . sort ( comparer ) ) as readonly T [ ] as SortedReadonlyArray < T > ;
10441044}
10451045
10461046/** @internal */
@@ -1050,17 +1050,6 @@ export function* arrayReverseIterator<T>(array: readonly T[]) {
10501050 }
10511051}
10521052
1053- /**
1054- * Stable sort of an array. Elements equal to each other maintain their relative position in the array.
1055- *
1056- * @internal
1057- */
1058- export function stableSort < T > ( array : readonly T [ ] , comparer : Comparer < T > ) : SortedReadonlyArray < T > {
1059- const indices = indicesOf ( array ) ;
1060- stableSortIndices ( array , indices , comparer ) ;
1061- return indices . map ( i => array [ i ] ) as SortedArray < T > as SortedReadonlyArray < T > ;
1062- }
1063-
10641053/** @internal */
10651054export function rangeEquals < T > ( array1 : readonly T [ ] , array2 : readonly T [ ] , pos : number , end : number ) {
10661055 while ( pos < end ) {
0 commit comments