From dd2aa3de2847cf4bd65dd9e46329ff32820b1a70 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 31 Mar 2020 00:21:19 +0300 Subject: [PATCH] Add sample for filterNot and improve sample for filter --- .../stdlib/common/src/generated/_Arrays.kt | 36 ++++++++++++++++++- .../common/src/generated/_Collections.kt | 2 ++ .../stdlib/common/src/generated/_Sequences.kt | 6 ++-- .../stdlib/common/src/generated/_Strings.kt | 8 +++++ .../stdlib/common/src/generated/_UArrays.kt | 16 +++++++++ .../test/samples/collections/collections.kt | 8 +++-- .../src/templates/Filtering.kt | 1 + 7 files changed, 71 insertions(+), 6 deletions(-) diff --git a/libraries/stdlib/common/src/generated/_Arrays.kt b/libraries/stdlib/common/src/generated/_Arrays.kt index 8502e49381f..62d076ba049 100644 --- a/libraries/stdlib/common/src/generated/_Arrays.kt +++ b/libraries/stdlib/common/src/generated/_Arrays.kt @@ -3591,7 +3591,7 @@ public inline fun CharArray.dropWhile(predicate: (Char) -> Boolean): List /** * Returns a list containing only elements matching the given [predicate]. * - * @sample samples.collections.Collections.Filtering.filter + * @sample samples.collections.Collections.Filtering.filter */ public inline fun Array.filter(predicate: (T) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3599,6 +3599,8 @@ public inline fun Array.filter(predicate: (T) -> Boolean): List { /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3606,6 +3608,8 @@ public inline fun ByteArray.filter(predicate: (Byte) -> Boolean): List { /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun ShortArray.filter(predicate: (Short) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3613,6 +3617,8 @@ public inline fun ShortArray.filter(predicate: (Short) -> Boolean): List /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun IntArray.filter(predicate: (Int) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3620,6 +3626,8 @@ public inline fun IntArray.filter(predicate: (Int) -> Boolean): List { /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun LongArray.filter(predicate: (Long) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3627,6 +3635,8 @@ public inline fun LongArray.filter(predicate: (Long) -> Boolean): List { /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun FloatArray.filter(predicate: (Float) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3634,6 +3644,8 @@ public inline fun FloatArray.filter(predicate: (Float) -> Boolean): List /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List { return filterTo(ArrayList(), predicate) @@ -3641,6 +3653,8 @@ public inline fun DoubleArray.filter(predicate: (Double) -> Boolean): List Boolean): List { return filterTo(ArrayList(), predicate) @@ -3648,6 +3662,8 @@ public inline fun BooleanArray.filter(predicate: (Boolean) -> Boolean): List Boolean): List { return filterTo(ArrayList(), predicate) @@ -3859,6 +3875,8 @@ public inline fun > Array<*>.filterIsInst /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun Array.filterNot(predicate: (T) -> Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3866,6 +3884,8 @@ public inline fun Array.filterNot(predicate: (T) -> Boolean): List /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3873,6 +3893,8 @@ public inline fun ByteArray.filterNot(predicate: (Byte) -> Boolean): List /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3880,6 +3902,8 @@ public inline fun ShortArray.filterNot(predicate: (Short) -> Boolean): List Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3887,6 +3911,8 @@ public inline fun IntArray.filterNot(predicate: (Int) -> Boolean): List { /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3894,6 +3920,8 @@ public inline fun LongArray.filterNot(predicate: (Long) -> Boolean): List /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3901,6 +3929,8 @@ public inline fun FloatArray.filterNot(predicate: (Float) -> Boolean): List Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3908,6 +3938,8 @@ public inline fun DoubleArray.filterNot(predicate: (Double) -> Boolean): List Boolean): List { return filterNotTo(ArrayList(), predicate) @@ -3915,6 +3947,8 @@ public inline fun BooleanArray.filterNot(predicate: (Boolean) -> Boolean): List< /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun CharArray.filterNot(predicate: (Char) -> Boolean): List { return filterNotTo(ArrayList(), predicate) diff --git a/libraries/stdlib/common/src/generated/_Collections.kt b/libraries/stdlib/common/src/generated/_Collections.kt index ec2da4aa578..8719d232b74 100644 --- a/libraries/stdlib/common/src/generated/_Collections.kt +++ b/libraries/stdlib/common/src/generated/_Collections.kt @@ -744,6 +744,8 @@ public inline fun > Iterable<*>.filterIsI /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun Iterable.filterNot(predicate: (T) -> Boolean): List { return filterNotTo(ArrayList(), predicate) diff --git a/libraries/stdlib/common/src/generated/_Sequences.kt b/libraries/stdlib/common/src/generated/_Sequences.kt index 845378d2886..a02db375f10 100644 --- a/libraries/stdlib/common/src/generated/_Sequences.kt +++ b/libraries/stdlib/common/src/generated/_Sequences.kt @@ -375,8 +375,8 @@ public fun Sequence.dropWhile(predicate: (T) -> Boolean): Sequence { * Returns a sequence containing only elements matching the given [predicate]. * * The operation is _intermediate_ and _stateless_. - * - * @sample samples.collections.Collections.Filtering.filter + * + * @sample samples.collections.Collections.Filtering.filter */ public fun Sequence.filter(predicate: (T) -> Boolean): Sequence { return FilteringSequence(this, true, predicate) @@ -432,6 +432,8 @@ public inline fun > Sequence<*>.filterIsI * Returns a sequence containing all elements not matching the given [predicate]. * * The operation is _intermediate_ and _stateless_. + * + * @sample samples.collections.Collections.Filtering.filter */ public fun Sequence.filterNot(predicate: (T) -> Boolean): Sequence { return FilteringSequence(this, false, predicate) diff --git a/libraries/stdlib/common/src/generated/_Strings.kt b/libraries/stdlib/common/src/generated/_Strings.kt index 8841cf7b1e9..665fe4f8fdf 100644 --- a/libraries/stdlib/common/src/generated/_Strings.kt +++ b/libraries/stdlib/common/src/generated/_Strings.kt @@ -366,6 +366,8 @@ public inline fun String.dropWhile(predicate: (Char) -> Boolean): String { /** * Returns a char sequence containing only those characters from the original char sequence that match the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun CharSequence.filter(predicate: (Char) -> Boolean): CharSequence { return filterTo(StringBuilder(), predicate) @@ -373,6 +375,8 @@ public inline fun CharSequence.filter(predicate: (Char) -> Boolean): CharSequenc /** * Returns a string containing only those characters from the original string that match the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun String.filter(predicate: (Char) -> Boolean): String { return filterTo(StringBuilder(), predicate).toString() @@ -410,6 +414,8 @@ public inline fun CharSequence.filterIndexedTo(destination: C, /** * Returns a char sequence containing only those characters from the original char sequence that do not match the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun CharSequence.filterNot(predicate: (Char) -> Boolean): CharSequence { return filterNotTo(StringBuilder(), predicate) @@ -417,6 +423,8 @@ public inline fun CharSequence.filterNot(predicate: (Char) -> Boolean): CharSequ /** * Returns a string containing only those characters from the original string that do not match the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ public inline fun String.filterNot(predicate: (Char) -> Boolean): String { return filterNotTo(StringBuilder(), predicate).toString() diff --git a/libraries/stdlib/common/src/generated/_UArrays.kt b/libraries/stdlib/common/src/generated/_UArrays.kt index 80419134d6f..8936023e98e 100644 --- a/libraries/stdlib/common/src/generated/_UArrays.kt +++ b/libraries/stdlib/common/src/generated/_UArrays.kt @@ -1792,6 +1792,8 @@ public inline fun UShortArray.dropWhile(predicate: (UShort) -> Boolean): List Boolean): List { /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ @SinceKotlin("1.3") @ExperimentalUnsignedTypes @@ -1812,6 +1816,8 @@ public inline fun ULongArray.filter(predicate: (ULong) -> Boolean): List /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ @SinceKotlin("1.3") @ExperimentalUnsignedTypes @@ -1822,6 +1828,8 @@ public inline fun UByteArray.filter(predicate: (UByte) -> Boolean): List /** * Returns a list containing only elements matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ @SinceKotlin("1.3") @ExperimentalUnsignedTypes @@ -1940,6 +1948,8 @@ public inline fun > UShortArray.filterIndexedTo /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ @SinceKotlin("1.3") @ExperimentalUnsignedTypes @@ -1950,6 +1960,8 @@ public inline fun UIntArray.filterNot(predicate: (UInt) -> Boolean): List /** * Returns a list containing all elements not matching the given [predicate]. + * + * @sample samples.collections.Collections.Filtering.filter */ @SinceKotlin("1.3") @ExperimentalUnsignedTypes @@ -1960,6 +1972,8 @@ public inline fun ULongArray.filterNot(predicate: (ULong) -> Boolean): List Boolean): List = listOf(1, 2, 3, 4) - val evenNumbers = numbers.filter { number -> number.rem(2) == 0 } + val numbers: List = listOf(1, 2, 3, 4, 5, 6, 7) + val evenNumbers = numbers.filter { it % 2 == 0 } + val notMultiplesOf3 = numbers.filterNot { number -> number % 3 == 0 } - assertPrints(evenNumbers, "[2, 4]") + assertPrints(evenNumbers, "[2, 4, 6]") + assertPrints(notMultiplesOf3, "[1, 2, 4, 5, 7]") } @Sample diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt index ee67fc970ff..d21ce92f5cd 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt @@ -677,6 +677,7 @@ object Filtering : TemplateGroupBase() { specialFor(ArraysOfUnsigned) { inlineOnly() } doc { "Returns a list containing all elements not matching the given [predicate]." } + sample("samples.collections.Collections.Filtering.filter") returns("List") body { """