diff --git a/libraries/stdlib/src/generated/_Filtering.kt b/libraries/stdlib/src/generated/_Filtering.kt index 243cbe6d18a..63657a02a1c 100644 --- a/libraries/stdlib/src/generated/_Filtering.kt +++ b/libraries/stdlib/src/generated/_Filtering.kt @@ -1411,7 +1411,7 @@ public fun ShortArray.sliceArray(indices: IntRange): ShortArray { * Returns a list containing first [n] elements. */ public fun Array.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1428,7 +1428,7 @@ public fun Array.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun BooleanArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1445,7 +1445,7 @@ public fun BooleanArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun ByteArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1462,7 +1462,7 @@ public fun ByteArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun CharArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1479,7 +1479,7 @@ public fun CharArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun DoubleArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1496,7 +1496,7 @@ public fun DoubleArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun FloatArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1513,7 +1513,7 @@ public fun FloatArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun IntArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1530,7 +1530,7 @@ public fun IntArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun LongArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 @@ -1547,7 +1547,7 @@ public fun LongArray.take(n: Int): List { * Returns a list containing first [n] elements. */ public fun ShortArray.take(n: Int): List { - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0 diff --git a/libraries/stdlib/src/kotlin/util/Preconditions.kt b/libraries/stdlib/src/kotlin/util/Preconditions.kt index 626c97498fc..1dd75849931 100644 --- a/libraries/stdlib/src/kotlin/util/Preconditions.kt +++ b/libraries/stdlib/src/kotlin/util/Preconditions.kt @@ -4,11 +4,17 @@ package kotlin import java.lang.IllegalArgumentException import java.lang.IllegalStateException +/** + * Throws an [IllegalArgumentException] if the [value] is false. + */ +public fun require(value: Boolean): Unit = require(value) { "Failed requirement" } + /** * Throws an [IllegalArgumentException] with an optional [message] if the [value] is false. * * @sample test.collections.PreconditionsTest.failingRequireWithMessage */ +@deprecated("Use require with lazy message instead.", ReplaceWith("require(value) { message }")) public fun require(value: Boolean, message: Any = "Failed requirement"): Unit { if (!value) { throw IllegalArgumentException(message.toString()) @@ -27,12 +33,18 @@ public inline fun require(value: Boolean, lazyMessage: () -> Any): Unit { } } +/** + * Throws an [IllegalArgumentException] if the [value] is null. Otherwise returns the not null value. + */ +public fun requireNotNull(value: T?): T = requireNotNull(value) { "Required value was null" } + /** * Throws an [IllegalArgumentException] with the given [message] if the [value] is null. Otherwise * returns the not null value. * * @sample test.collections.PreconditionsTest.requireNotNull */ +@deprecated("Use requireNotNull with lazy message instead.", ReplaceWith("requireNotNull(value) { message }")) public fun requireNotNull(value: T?, message: Any = "Required value was null"): T { if (value == null) { throw IllegalArgumentException(message.toString()) @@ -47,7 +59,7 @@ public fun requireNotNull(value: T?, message: Any = "Required value was * * @sample test.collections.PreconditionsTest.requireNotNullWithLazyMessage */ -public fun requireNotNull(value: T?, lazyMessage: () -> Any): T { +public inline fun requireNotNull(value: T?, lazyMessage: () -> Any): T { if (value == null) { val message = lazyMessage() throw IllegalArgumentException(message.toString()) @@ -56,11 +68,17 @@ public fun requireNotNull(value: T?, lazyMessage: () -> Any): T { } } +/** + * Throws an [IllegalStateException] if the [value] is false. + */ +public fun check(value: Boolean): Unit = check(value) { "Check failed" } + /** * Throws an [IllegalStateException] with an optional [message] if the [value] is false. * * @sample test.collections.PreconditionsTest.failingCheckWithMessage */ +@deprecated("Use check with lazy message instead.", ReplaceWith("check(value) { message }")) public fun check(value: Boolean, message: Any = "Check failed"): Unit { if (!value) { throw IllegalStateException(message.toString()) @@ -79,12 +97,19 @@ public inline fun check(value: Boolean, lazyMessage: () -> Any): Unit { } } +/** + * Throws an [IllegalStateException] if the [value] is null. Otherwise + * returns the not null value. + */ +public fun checkNotNull(value: T?): T = checkNotNull(value) { "Required value was null" } + /** * Throws an [IllegalStateException] with the given [message] if the [value] is null. Otherwise * returns the not null value. * * @sample test.collections.PreconditionsTest.checkNotNull */ +@deprecated("Use checkNotNull with lazy message instead.", ReplaceWith("checkNotNull(value) { message }")) public fun checkNotNull(value: T?, message: Any = "Required value was null"): T { if (value == null) { throw IllegalStateException(message.toString()) @@ -93,6 +118,20 @@ public fun checkNotNull(value: T?, message: Any = "Required value was nu } } +/** + * Throws an [IllegalStateException] with the result of calling [lazyMessage] if the [value] is null. Otherwise + * returns the not null value. + */ +public inline fun checkNotNull(value: T?, lazyMessage: () -> Any): T { + if (value == null) { + val message = lazyMessage() + throw IllegalStateException(message.toString()) + } else { + return value + } +} + + /** * Throws an [IllegalStateException] with the given [message]. * diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt index 83ee4b2f068..9e8684266f6 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Filtering.kt @@ -108,7 +108,7 @@ fun filtering(): List { body(ArraysOfObjects, ArraysOfPrimitives) { """ - require(n >= 0, "Requested element count $n is less than zero.") + require(n >= 0) { "Requested element count $n is less than zero." } if (n == 0) return emptyList() if (n >= size()) return toList() var count = 0