diff --git a/libraries/stdlib/src/generated/ArraysFromIterables.kt b/libraries/stdlib/src/generated/ArraysFromIterables.kt index 1e62db468ae..f3b4db871ee 100644 --- a/libraries/stdlib/src/generated/ArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/ArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > Array.filterTo(result: C, p return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun Array.partition(predicate: (T) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/BooleanArraysFromIterables.kt b/libraries/stdlib/src/generated/BooleanArraysFromIterables.kt index c05eecec537..70609b187d6 100644 --- a/libraries/stdlib/src/generated/BooleanArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/BooleanArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > BooleanArray.filterTo(result: return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun BooleanArray.partition(predicate: (Boolean) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/ByteArraysFromIterables.kt b/libraries/stdlib/src/generated/ByteArraysFromIterables.kt index 5d6452ce1a0..9b3c7a53bb8 100644 --- a/libraries/stdlib/src/generated/ByteArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/ByteArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > ByteArray.filterTo(result: C, pre return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun ByteArray.partition(predicate: (Byte) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/CharArraysFromIterables.kt b/libraries/stdlib/src/generated/CharArraysFromIterables.kt index 0cbdc30025b..9d539c9f34a 100644 --- a/libraries/stdlib/src/generated/CharArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/CharArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > CharArray.filterTo(result: C, pre return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun CharArray.partition(predicate: (Char) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/DoubleArraysFromIterables.kt b/libraries/stdlib/src/generated/DoubleArraysFromIterables.kt index 6f425180dce..678bbb0b0d6 100644 --- a/libraries/stdlib/src/generated/DoubleArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/DoubleArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > DoubleArray.filterTo(result: C, return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun DoubleArray.partition(predicate: (Double) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/FloatArraysFromIterables.kt b/libraries/stdlib/src/generated/FloatArraysFromIterables.kt index 92df196b3b6..d2db0e884a9 100644 --- a/libraries/stdlib/src/generated/FloatArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/FloatArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > FloatArray.filterTo(result: C, p return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun FloatArray.partition(predicate: (Float) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/IntArraysFromIterables.kt b/libraries/stdlib/src/generated/IntArraysFromIterables.kt index 1c4c6e187b3..0412cd6d8e5 100644 --- a/libraries/stdlib/src/generated/IntArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/IntArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > IntArray.filterTo(result: C, predi return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun IntArray.partition(predicate: (Int) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/IteratorsFromIterables.kt b/libraries/stdlib/src/generated/IteratorsFromIterables.kt index f80e55a0f11..7add95fb920 100644 --- a/libraries/stdlib/src/generated/IteratorsFromIterables.kt +++ b/libraries/stdlib/src/generated/IteratorsFromIterables.kt @@ -83,6 +83,24 @@ public inline fun > Iterator.filterTo(result: C return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun Iterator.partition(predicate: (T) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/LongArraysFromIterables.kt b/libraries/stdlib/src/generated/LongArraysFromIterables.kt index 40067e7e15d..8928763bff3 100644 --- a/libraries/stdlib/src/generated/LongArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/LongArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > LongArray.filterTo(result: C, pre return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun LongArray.partition(predicate: (Long) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/generated/ShortArraysFromIterables.kt b/libraries/stdlib/src/generated/ShortArraysFromIterables.kt index 60badffa36e..04944674279 100644 --- a/libraries/stdlib/src/generated/ShortArraysFromIterables.kt +++ b/libraries/stdlib/src/generated/ShortArraysFromIterables.kt @@ -84,6 +84,24 @@ public inline fun > ShortArray.filterTo(result: C, p return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun ShortArray.partition(predicate: (Short) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/src/kotlin/Iterables.kt b/libraries/stdlib/src/kotlin/Iterables.kt index dbbed96f227..1bb064c181d 100644 --- a/libraries/stdlib/src/kotlin/Iterables.kt +++ b/libraries/stdlib/src/kotlin/Iterables.kt @@ -75,6 +75,24 @@ public inline fun > Iterable.filterTo(result: C return result } +/** + * Partitions this collection into a pair of collection + * + * @includeFunctionBody ../../test/CollectionTest.kt partition + */ +public inline fun Iterable.partition(predicate: (T) -> Boolean) : Pair, List> { + val first = ArrayList() + val second = ArrayList() + for (element in this) { + if (predicate(element)) { + first.add(element) + } else { + second.add(element) + } + } + return Pair(first, second) +} + /** * Returns a list containing all elements which do not match the given *predicate* * diff --git a/libraries/stdlib/test/CollectionTest.kt b/libraries/stdlib/test/CollectionTest.kt index 08e7bdd4a03..315cf933aef 100644 --- a/libraries/stdlib/test/CollectionTest.kt +++ b/libraries/stdlib/test/CollectionTest.kt @@ -156,6 +156,14 @@ class CollectionTest { } } + test fun partition() { + val data = arrayList("foo", "bar", "something", "xyz") + val pair = data.partition{it.size == 3} + + assertEquals(arrayList("foo", "bar", "xyz"), pair.first, "pair.first") + assertEquals(arrayList("something"), pair.second, "pair.second") + } + test fun reduce() { expect("1234") { val list = arrayList("1", "2", "3", "4")