Effects: annotate functions in stdlib with contracts
build.xml was also changed to incorporate contracts in mock-runtime-for-tests.jar, because it is using Standard.kt, which, in turn, has contract-annotated functions. ========== Introduction of EffectSystem: 17/18
This commit is contained in:
@@ -24,6 +24,7 @@
|
||||
package kotlin.test
|
||||
|
||||
import kotlin.internal.*
|
||||
import kotlin.internal.contracts.*
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
/**
|
||||
@@ -40,6 +41,7 @@ fun assertTrue(message: String? = null, block: () -> Boolean): Unit = assertTrue
|
||||
|
||||
/** Asserts that the expression is `true` with an optional [message]. */
|
||||
fun assertTrue(actual: Boolean, message: String? = null) {
|
||||
contract { returns() implies actual }
|
||||
return asserter.assertTrue(message ?: "Expected value to be true.", actual)
|
||||
}
|
||||
|
||||
@@ -48,6 +50,7 @@ fun assertFalse(message: String? = null, block: () -> Boolean): Unit = assertFal
|
||||
|
||||
/** Asserts that the expression is `false` with an optional [message]. */
|
||||
fun assertFalse(actual: Boolean, message: String? = null) {
|
||||
contract { returns() implies (!actual) }
|
||||
return asserter.assertTrue(message ?: "Expected value to be false.", !actual)
|
||||
}
|
||||
|
||||
@@ -63,12 +66,14 @@ fun <@OnlyInputTypes T> assertNotEquals(illegal: T, actual: T, message: String?
|
||||
|
||||
/** Asserts that the [actual] value is not `null`, with an optional [message]. */
|
||||
fun <T : Any> assertNotNull(actual: T?, message: String? = null): T {
|
||||
contract { returns() implies (actual != null) }
|
||||
asserter.assertNotNull(message, actual)
|
||||
return actual!!
|
||||
}
|
||||
|
||||
/** Asserts that the [actual] value is not `null`, with an optional [message] and a function [block] to process the not-null value. */
|
||||
fun <T : Any, R> assertNotNull(actual: T?, message: String? = null, block: (T) -> R) {
|
||||
contract { returns() implies (actual != null) }
|
||||
asserter.assertNotNull(message, actual)
|
||||
if (actual != null) {
|
||||
block(actual)
|
||||
|
||||
Reference in New Issue
Block a user