From 30be84cd5551eb1facc77effcb4c6905998eeece Mon Sep 17 00:00:00 2001 From: Ilya Matveev Date: Fri, 10 Mar 2017 15:32:45 +0300 Subject: [PATCH] stdlib: Add assert() functions. --- runtime/src/main/kotlin/kotlin/Assertions.kt | 20 ++++++++++++++++++++ runtime/src/main/kotlin/kotlin/Exceptions.kt | 3 +++ 2 files changed, 23 insertions(+) create mode 100644 runtime/src/main/kotlin/kotlin/Assertions.kt 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) { } }