diff --git a/runtime/src/main/kotlin/kotlin/Assertions.kt b/runtime/src/main/kotlin/kotlin/Assertions.kt new file mode 100644 index 00000000000..9a8a42f09ea --- /dev/null +++ b/runtime/src/main/kotlin/kotlin/Assertions.kt @@ -0,0 +1,20 @@ +package kotlin + +/** + * Throws an [AssertionError] if the [value] is false + * and runtime assertions have been enabled during compilation. + */ +public inline fun assert(value: Boolean) { + assert(value) { "Assertion failed" } +} + +/** + * Throws an [AssertionError] calculated by [lazyMessage] if the [value] is false + * and runtime assertions have been enabled during compilation. + */ +public inline fun assert(value: Boolean, lazyMessage: () -> Any) { + if (!value) { + val message = lazyMessage() + throw AssertionError(message) + } +} diff --git a/runtime/src/main/kotlin/kotlin/Exceptions.kt b/runtime/src/main/kotlin/kotlin/Exceptions.kt index 50f49c24daf..d6657db7606 100644 --- a/runtime/src/main/kotlin/kotlin/Exceptions.kt +++ b/runtime/src/main/kotlin/kotlin/Exceptions.kt @@ -142,6 +142,9 @@ public class AssertionError : Error { constructor(message: String) : super(message) { } + constructor(message: Any) : super(message.toString()) { + } + constructor(message: String, cause: Throwable) : super(message, cause) { } }