| // LANGUAGE: +ContextParameters | |
| // SKIP_IR_DESERIALIZATION_CHECKS | |
| // ^ Context parameter names aren't serialized to metadata yet KT-74546 | |
| // MODULE: a | |
| // FILE: a.kt | |
| import kotlin.contracts.ExperimentalContracts | |
| import kotlin.contracts.contract | |
| @OptIn(ExperimentalContracts::class) | |
| context(a: String?) | |
| fun validate1() { | |
| contract { | |
| returns() implies (a != null) | |
| } | |
| a!! | |
| } | |
| // MODULE: b(a) | |
| // FILE: b.kt | |
| import kotlin.contracts.ExperimentalContracts | |
| import kotlin.contracts.contract | |
| @OptIn(ExperimentalContracts::class) | |
| context(a: String?) | |
| fun validate2() { | |
| contract { | |
| returns() implies (a != null) | |
| } | |
| a!! | |
| } | |
| fun box(): String { | |
| return with("O" as String?) { | |
| validate1() | |
| this | |
| } + with("K" as String?) { | |
| validate2() | |
| this | |
| } | |
| } |