Deprecate precondition checks with non-lazy message.
Make precondition checks with lazy message inline. Use require with lazy message in stdlib. #KT-8253 Fixed
This commit is contained in:
@@ -1411,7 +1411,7 @@ public fun ShortArray.sliceArray(indices: IntRange): ShortArray {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun <T> Array<out T>.take(n: Int): List<T> {
|
||||
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 <T> Array<out T>.take(n: Int): List<T> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun BooleanArray.take(n: Int): List<Boolean> {
|
||||
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<Boolean> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun ByteArray.take(n: Int): List<Byte> {
|
||||
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<Byte> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun CharArray.take(n: Int): List<Char> {
|
||||
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<Char> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun DoubleArray.take(n: Int): List<Double> {
|
||||
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<Double> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun FloatArray.take(n: Int): List<Float> {
|
||||
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<Float> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun IntArray.take(n: Int): List<Int> {
|
||||
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<Int> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun LongArray.take(n: Int): List<Long> {
|
||||
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<Long> {
|
||||
* Returns a list containing first [n] elements.
|
||||
*/
|
||||
public fun ShortArray.take(n: Int): List<Short> {
|
||||
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
|
||||
|
||||
@@ -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 <T:Any> 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 <T:Any> requireNotNull(value: T?, message: Any = "Required value was null"): T {
|
||||
if (value == null) {
|
||||
throw IllegalArgumentException(message.toString())
|
||||
@@ -47,7 +59,7 @@ public fun <T:Any> requireNotNull(value: T?, message: Any = "Required value was
|
||||
*
|
||||
* @sample test.collections.PreconditionsTest.requireNotNullWithLazyMessage
|
||||
*/
|
||||
public fun <T:Any> requireNotNull(value: T?, lazyMessage: () -> Any): T {
|
||||
public inline fun <T:Any> requireNotNull(value: T?, lazyMessage: () -> Any): T {
|
||||
if (value == null) {
|
||||
val message = lazyMessage()
|
||||
throw IllegalArgumentException(message.toString())
|
||||
@@ -56,11 +68,17 @@ public fun <T:Any> 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 <T:Any> 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 <T:Any> checkNotNull(value: T?, message: Any = "Required value was null"): T {
|
||||
if (value == null) {
|
||||
throw IllegalStateException(message.toString())
|
||||
@@ -93,6 +118,20 @@ public fun <T:Any> 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 <T:Any> 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].
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user