diff --git a/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt b/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt index adc2be1e622..ae0f882e4e2 100644 --- a/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt +++ b/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt @@ -105,6 +105,18 @@ public fun java.lang.Iterable.withIndices() : java.lang.Iterable<#(Int, T } } +public inline fun > java.lang.Iterable.sort() : List { + val list = toList() + java.util.Collections.sort(list) + return list +} + +public inline fun java.lang.Iterable.sort(comparator: java.util.Comparator) : List { + val list = toList() + java.util.Collections.sort(list, comparator) + return list +} + private class NumberedIterator(private val sourceIterator : java.util.Iterator) : java.util.Iterator<#(Int, TT)> { private var nextIndex = 0 diff --git a/libraries/stdlib/src/kotlin/JUtil.kt b/libraries/stdlib/src/kotlin/JUtil.kt index 4d4f7005e4a..a0190a6adba 100644 --- a/libraries/stdlib/src/kotlin/JUtil.kt +++ b/libraries/stdlib/src/kotlin/JUtil.kt @@ -40,17 +40,6 @@ public inline fun > java.lang.Iterable.toSorted // List APIs - -public inline fun > List.sort() : List { - Collections.sort(this) - return this -} - -public inline fun List.sort(comparator: java.util.Comparator) : List { - Collections.sort(this, comparator) - return this -} - /** Returns the List if its not null otherwise returns the empty list */ public inline fun java.util.List?.orEmpty() : java.util.List = if (this != null) this else Collections.emptyList() as java.util.List diff --git a/libraries/stdlib/test/CollectionTest.kt b/libraries/stdlib/test/CollectionTest.kt index e8bf63c717c..60992eefed8 100644 --- a/libraries/stdlib/test/CollectionTest.kt +++ b/libraries/stdlib/test/CollectionTest.kt @@ -337,15 +337,21 @@ class CollectionTest { expect(arrayList(2, 3, 1)) { iterable } } - test fun sort() { - val coll: List = arrayList("foo", "bar", "abc") - - // TODO fixme - // Some sort of in/out variance thing - or an issue with Java interop? - //coll.sort() + test fun sortFunctionShouldReturnSortedCopyForList() { + // TODO fixme Some sort of in/out variance thing - or an issue with Java interop? todo { - assertEquals(3, coll.size) - assertEquals(arrayList("abc", "bar", "foo"), coll) +// val list : List = arrayList(2, 3, 1) +// expect(arrayList(1, 2, 3)) { list.sort() } +// expect(arrayList(2, 3, 1)) { list } + } + } + + test fun sortFunctionShouldReturnSortedCopyForIterable() { + // TODO fixme Some sort of in/out variance thing - or an issue with Java interop? + todo { +// val list : java.lang.Iterable = arrayList(2, 3, 1) +// expect(arrayList(1, 2, 3)) { list.sort() } +// expect(arrayList(2, 3, 1)) { list } } }