From 15375c0fd5d249bcccafd77131a63a279af310a0 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 6 Feb 2024 15:57:42 +0100 Subject: [PATCH] [stdlib] Use more idiomatic and performant implementation of isBlank Also replace expect-actual with a common function because its implementation is no longer different in different platforms. KT-65590 --- .../runtime/src/main/kotlin/kotlin/text/Strings.kt | 7 ------- libraries/stdlib/common/src/kotlin/TextH.kt | 1 - libraries/stdlib/js/src/kotlin/text/stringsCode.kt | 7 ------- libraries/stdlib/jvm/src/kotlin/text/StringsJVM.kt | 7 ------- libraries/stdlib/src/kotlin/text/Strings.kt | 9 ++++++--- libraries/stdlib/wasm/src/kotlin/text/StringsWasm.kt | 7 ------- 6 files changed, 6 insertions(+), 32 deletions(-) diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/text/Strings.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/text/Strings.kt index e64e9cb96fd..1b22057e48e 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/text/Strings.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/text/Strings.kt @@ -114,13 +114,6 @@ public actual fun String.replaceFirst(oldValue: String, newValue: String, ignore return if (index < 0) this else this.replaceRange(index, index + oldValue.length, newValue) } -/** - * Returns `true` if this string is empty or consists solely of whitespace characters. - * - * @sample samples.text.Strings.stringIsBlank - */ -public actual fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } - /** * Returns the substring of this string starting at the [startIndex] and ending right before the [endIndex]. * diff --git a/libraries/stdlib/common/src/kotlin/TextH.kt b/libraries/stdlib/common/src/kotlin/TextH.kt index 7ca06163604..726c023ebc0 100644 --- a/libraries/stdlib/common/src/kotlin/TextH.kt +++ b/libraries/stdlib/common/src/kotlin/TextH.kt @@ -421,7 +421,6 @@ public expect fun String.endsWith(suffix: String, ignoreCase: Boolean = false): internal expect fun String.nativeIndexOf(ch: Char, fromIndex: Int): Int internal expect fun String.nativeLastIndexOf(ch: Char, fromIndex: Int): Int -public expect fun CharSequence.isBlank(): Boolean /** * Returns `true` if the specified range in this char sequence is equal to the specified range in another char sequence. * @param thisOffset the start offset in this char sequence of the substring to compare. diff --git a/libraries/stdlib/js/src/kotlin/text/stringsCode.kt b/libraries/stdlib/js/src/kotlin/text/stringsCode.kt index bb373053a66..e381ec4d613 100644 --- a/libraries/stdlib/js/src/kotlin/text/stringsCode.kt +++ b/libraries/stdlib/js/src/kotlin/text/stringsCode.kt @@ -54,13 +54,6 @@ public fun String.matches(regex: String): Boolean { return result != null && result.size != 0 } -/** - * Returns `true` if this string is empty or consists solely of whitespace characters. - * - * @sample samples.text.Strings.stringIsBlank - */ -public actual fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } - /** * Returns `true` if this string is equal to [other], optionally ignoring character case. * diff --git a/libraries/stdlib/jvm/src/kotlin/text/StringsJVM.kt b/libraries/stdlib/jvm/src/kotlin/text/StringsJVM.kt index 3040b51e298..978a31a6e76 100644 --- a/libraries/stdlib/jvm/src/kotlin/text/StringsJVM.kt +++ b/libraries/stdlib/jvm/src/kotlin/text/StringsJVM.kt @@ -614,13 +614,6 @@ public actual fun CharSequence?.contentEquals(other: CharSequence?, ignoreCase: @kotlin.internal.InlineOnly public inline fun String.intern(): String = (this as java.lang.String).intern() -/** - * Returns `true` if this string is empty or consists solely of whitespace characters. - * - * @sample samples.text.Strings.stringIsBlank - */ -public actual fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } - /** * Returns the index within this string that is offset from the given [index] by [codePointOffset] code points. */ diff --git a/libraries/stdlib/src/kotlin/text/Strings.kt b/libraries/stdlib/src/kotlin/text/Strings.kt index 7d225077292..cd8f59a234d 100644 --- a/libraries/stdlib/src/kotlin/text/Strings.kt +++ b/libraries/stdlib/src/kotlin/text/Strings.kt @@ -303,9 +303,12 @@ public inline fun CharSequence.isEmpty(): Boolean = length == 0 @kotlin.internal.InlineOnly public inline fun CharSequence.isNotEmpty(): Boolean = length > 0 -// implemented differently in JVM and JS -//public fun String.isBlank(): Boolean = length() == 0 || all { it.isWhitespace() } - +/** + * Returns `true` if this char sequence is empty or consists solely of whitespace characters. + * + * @sample samples.text.Strings.stringIsBlank + */ +public fun CharSequence.isBlank(): Boolean = all { it.isWhitespace() } /** * Returns `true` if this char sequence is not empty and contains some characters except whitespace characters. diff --git a/libraries/stdlib/wasm/src/kotlin/text/StringsWasm.kt b/libraries/stdlib/wasm/src/kotlin/text/StringsWasm.kt index fe1faf5e252..e30a1fd999a 100644 --- a/libraries/stdlib/wasm/src/kotlin/text/StringsWasm.kt +++ b/libraries/stdlib/wasm/src/kotlin/text/StringsWasm.kt @@ -499,13 +499,6 @@ public actual fun String.endsWith(suffix: String, ignoreCase: Boolean = false): // From stringsCode.kt -/** - * Returns `true` if this string is empty or consists solely of whitespace characters. - * - * @sample samples.text.Strings.stringIsBlank - */ -public actual fun CharSequence.isBlank(): Boolean = length == 0 || indices.all { this[it].isWhitespace() } - /** * Returns `true` if the specified range in this char sequence is equal to the specified range in another char sequence. * @param thisOffset the start offset in this char sequence of the substring to compare.