73aa465ee9
Note that KT-30696 is fixed only in the single-module case, and KT-42012 is not fixed fully (see KT-44855). #KT-30041 #KT-30629 #KT-30696 #KT-30933 #KT-32351 #KT-32749 #KT-38849 #KT-42012 #KT-42990 #KT-44234 #KT-44529 #KT-44631 #KT-44647
28 lines
490 B
Kotlin
Vendored
28 lines
490 B
Kotlin
Vendored
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
|
|
// IGNORE_BACKEND: JVM
|
|
// WITH_RUNTIME
|
|
// KT-38849
|
|
|
|
import kotlin.contracts.*
|
|
|
|
fun block(lambda: () -> Unit) {
|
|
contract {
|
|
callsInPlace(lambda, InvocationKind.EXACTLY_ONCE)
|
|
}
|
|
lambda()
|
|
}
|
|
|
|
fun box(): String {
|
|
val list: List<Int>
|
|
|
|
block {
|
|
list = listOf(1, 2, 3)
|
|
}
|
|
|
|
block {
|
|
if (listOf(2, 3, 4).first { list.contains(it) } != 2) throw AssertionError("Fail")
|
|
}
|
|
|
|
return "OK"
|
|
}
|