diff --git a/libraries/stdlib/src/kotlin/text/StringBuilder.kt b/libraries/stdlib/src/kotlin/text/StringBuilder.kt index 0d5d16cc25d..b2996b3ba84 100644 --- a/libraries/stdlib/src/kotlin/text/StringBuilder.kt +++ b/libraries/stdlib/src/kotlin/text/StringBuilder.kt @@ -9,6 +9,12 @@ package kotlin.text @kotlin.internal.InlineOnly public inline fun buildString(builderAction: StringBuilder.() -> Unit): String = StringBuilder().apply(builderAction).toString() +/** + * Builds new string by populating newly created [StringBuilder] initialized with the given capacity using provided [builderAction] and then converting it to [String]. + */ +@kotlin.internal.InlineOnly +inline fun buildString(capacity : Int, builderAction: StringBuilder.() -> Unit): String = StringBuilder(capacity).apply(builderAction).toString() + /** * Appends all arguments to the given [Appendable]. */ diff --git a/libraries/stdlib/test/text/StringBuilderJVMTest.kt b/libraries/stdlib/test/text/StringBuilderJVMTest.kt index 4bd41acab5a..3e5ae4c2fc5 100644 --- a/libraries/stdlib/test/text/StringBuilderJVMTest.kt +++ b/libraries/stdlib/test/text/StringBuilderJVMTest.kt @@ -5,6 +5,13 @@ import kotlin.test.* import org.junit.Test as test class StringBuilderJVMTest() { + + @test fun stringBuildWithInitialCapacity() { + val s = buildString(123) { + assertEquals(123, capacity()) + } + } + @test fun getAndSetChar() { val sb = StringBuilder("abc") sb[1] = 'z'