| // IGNORE_BACKEND: WASM_JS, WASM_WASI | |
| // WASM_MUTE_REASON: STDLIB_ASSERT | |
| // IGNORE_BACKEND: JS_IR | |
| // IGNORE_BACKEND: JS_IR_ES6 | |
| // See related issue: https://youtrack.jetbrains.com/issue/KT-59059/Native-Assert-does-not-evaluate-argument-value-when-disabled | |
| // IGNORE_IR_DESERIALIZATION_TEST: JS_IR | |
| // ^^^ Assertions not supported for JS. | |
| // ASSERTIONS_MODE: always-disable | |
| // WITH_STDLIB | |
| // ExperimentalNativeApi is defined only in Native | |
| @file:Suppress("OPT_IN_USAGE_ERROR") | |
| fun checkTrue(): Boolean { | |
| var hit = false | |
| val l = { hit = true; true } | |
| assert(l()) | |
| return hit | |
| } | |
| fun checkTrueWithMessage(): Boolean { | |
| var hit = false | |
| val l = { hit = true; true } | |
| assert(l()) { "BOOYA!" } | |
| return hit | |
| } | |
| fun checkFalse(): Boolean { | |
| var hit = false | |
| val l = { hit = true; false } | |
| assert(l()) | |
| return hit | |
| } | |
| fun checkFalseWithMessage(): Boolean { | |
| var hit = false | |
| val l = { hit = true; false } | |
| assert(l()) { "BOOYA!" } | |
| return hit | |
| } | |
| fun box(): String { | |
| if (checkTrue()) return "FAIL 0" | |
| if (checkTrueWithMessage()) return "FAIL 1" | |
| if (checkFalse()) return "FAIL 2" | |
| if (checkFalseWithMessage()) return "FAIL 3" | |
| return "OK" | |
| } |