diff --git a/libraries/stdlib/src/generated/ArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/ArraysFromJLangIterables.kt index 91ef67657e6..aa7cc45dd9c 100644 --- a/libraries/stdlib/src/generated/ArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/ArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > Array.toCollection(result: C) : */ public inline fun Array.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/BooleanArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/BooleanArraysFromJLangIterables.kt index 62ab715c1dc..884b0654750 100644 --- a/libraries/stdlib/src/generated/BooleanArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/BooleanArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > BooleanArray.toCollection(result: C) */ public inline fun BooleanArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/ByteArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/ByteArraysFromJLangIterables.kt index 1892bb7c346..ed6c87d76d8 100644 --- a/libraries/stdlib/src/generated/ByteArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/ByteArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > ByteArray.toCollection(result: C) : C { */ public inline fun ByteArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/CharArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/CharArraysFromJLangIterables.kt index da2d49bbb83..fa8fb1dbdf8 100644 --- a/libraries/stdlib/src/generated/CharArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/CharArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > CharArray.toCollection(result: C) : C { */ public inline fun CharArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/DoubleArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/DoubleArraysFromJLangIterables.kt index c5589d9d81d..6c03f330ffe 100644 --- a/libraries/stdlib/src/generated/DoubleArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/DoubleArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > DoubleArray.toCollection(result: C) : */ public inline fun DoubleArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/FloatArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/FloatArraysFromJLangIterables.kt index 8a45fec0264..00ca183972e 100644 --- a/libraries/stdlib/src/generated/FloatArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/FloatArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > FloatArray.toCollection(result: C) : C */ public inline fun FloatArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/IntArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/IntArraysFromJLangIterables.kt index db2d6656aa8..d3b4a25723c 100644 --- a/libraries/stdlib/src/generated/IntArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/IntArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > IntArray.toCollection(result: C) : C { */ public inline fun IntArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/JUtilIteratorsFromJLangIterables.kt b/libraries/stdlib/src/generated/JUtilIteratorsFromJLangIterables.kt index c02c56c285a..7591b57acbd 100644 --- a/libraries/stdlib/src/generated/JUtilIteratorsFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/JUtilIteratorsFromJLangIterables.kt @@ -243,7 +243,8 @@ public inline fun > java.util.Iterator.toCollection */ public inline fun java.util.Iterator.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/LongArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/LongArraysFromJLangIterables.kt index c45a6e1ba4d..54e9b5177d8 100644 --- a/libraries/stdlib/src/generated/LongArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/LongArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > LongArray.toCollection(result: C) : C { */ public inline fun LongArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/ShortArraysFromJLangIterables.kt b/libraries/stdlib/src/generated/ShortArraysFromJLangIterables.kt index 7637d2ce156..bb55738749c 100644 --- a/libraries/stdlib/src/generated/ShortArraysFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/ShortArraysFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > ShortArray.toCollection(result: C) : C */ public inline fun ShortArray.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/generated/StandardFromJLangIterables.kt b/libraries/stdlib/src/generated/StandardFromJLangIterables.kt index 67b9b37d080..e1381a366ce 100644 --- a/libraries/stdlib/src/generated/StandardFromJLangIterables.kt +++ b/libraries/stdlib/src/generated/StandardFromJLangIterables.kt @@ -245,7 +245,8 @@ public inline fun > Iterable.toCollection(result: C */ public inline fun Iterable.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/kotlin/JLangIterables.kt b/libraries/stdlib/src/kotlin/JLangIterables.kt index a3179fa669f..2ae3c944b19 100644 --- a/libraries/stdlib/src/kotlin/JLangIterables.kt +++ b/libraries/stdlib/src/kotlin/JLangIterables.kt @@ -229,7 +229,8 @@ public inline fun > java.lang.Iterable.toCollection */ public inline fun java.lang.Iterable.reverse() : List { val list = toList() - return list.reverse() + Collections.reverse(list) + return list } /** Copies all elements into a [[LinkedList]] */ diff --git a/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt b/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt index 425749e11d9..3b42803dd31 100644 --- a/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt +++ b/libraries/stdlib/src/kotlin/JLangIterablesSpecial.kt @@ -106,6 +106,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 3b0c743de9d..a0190a6adba 100644 --- a/libraries/stdlib/src/kotlin/JUtil.kt +++ b/libraries/stdlib/src/kotlin/JUtil.kt @@ -40,26 +40,6 @@ public inline fun > java.lang.Iterable.toSorted // List APIs -/** - * Reverses the order the elements into a list - * - * @includeFunctionBody ../../test/CollectionTest.kt reverse - */ -public inline fun List.reverse() : List { - Collections.reverse(this) - return this -} - -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/ArraysTest.kt b/libraries/stdlib/test/ArraysTest.kt index 4c956fa86db..7b3c41df213 100644 --- a/libraries/stdlib/test/ArraysTest.kt +++ b/libraries/stdlib/test/ArraysTest.kt @@ -88,4 +88,15 @@ class ArraysTest { } } + test fun reverse() { + expect(arrayList(3, 2, 1)) { intArray(1, 2, 3).reverse() } + expect(arrayList(3, 2, 1)) { byteArray(1, 2, 3).reverse() } + expect(arrayList(3, 2, 1)) { shortArray(1, 2, 3).reverse() } + expect(arrayList(3, 2, 1)) { longArray(1, 2, 3).reverse() } + expect(arrayList(3.toFloat(), 2.toFloat(), 1.toFloat())) { floatArray(1.toFloat(), 2.toFloat(), 3.toFloat()).reverse() } + expect(arrayList(3.0, 2.0, 1.0)) { doubleArray(1.0, 2.0, 3.0).reverse() } + expect(arrayList('3', '2', '1')) { charArray('1', '2', '3').reverse() } + expect(arrayList(false, false, true)) { booleanArray(true, false, false).reverse() } + } + } diff --git a/libraries/stdlib/test/CollectionTest.kt b/libraries/stdlib/test/CollectionTest.kt index 030d5f081d9..36e8cf751ca 100644 --- a/libraries/stdlib/test/CollectionTest.kt +++ b/libraries/stdlib/test/CollectionTest.kt @@ -325,16 +325,33 @@ class CollectionTest { assertEquals(arrayList("bar", "foo"), rev) } - test fun sort() { - val coll: List = arrayList("foo", "bar", "abc") + test fun reverseFunctionShouldReturnReversedCopyForList() { + val list : List = arrayList(2, 3, 1) + expect(arrayList(1, 3, 2)) { list.reverse() } + expect(arrayList(2, 3, 1)) { list } + } - // TODO fixme - // Some sort of in/out variance thing - or an issue with Java interop? - //coll.sort() + test fun reverseFunctionShouldReturnReversedCopyForIterable() { + val iterable : java.lang.Iterable = arrayList(2, 3, 1) + expect(arrayList(1, 3, 2)) { iterable.reverse() } + expect(arrayList(2, 3, 1)) { iterable } + } + + 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 } } }