Allow use contract function by FQN. #KT-29772 fixed

This commit is contained in:
Dmitriy Novozhilov
2019-02-22 13:10:08 +03:00
parent 7072b9d179
commit b484e03fa8
5 changed files with 42 additions and 1 deletions
@@ -0,0 +1,20 @@
// !LANGUAGE: +AllowContractsForCustomFunctions +UseReturnsEffect
// !USE_EXPERIMENTAL: kotlin.contracts.ExperimentalContracts
// !DIAGNOSTICS: -INVISIBLE_REFERENCE -INVISIBLE_MEMBER
import kotlin.contracts.InvocationKind
inline fun foo(block: () -> Unit) {
kotlin.contracts.contract {
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
}
block()
}
fun main() {
val x: Int
foo {
x = 42
}
println(x)
}
@@ -0,0 +1,6 @@
package
public inline fun foo(/*0*/ block: () -> kotlin.Unit): kotlin.Unit
CallsInPlace(block, EXACTLY_ONCE)
public fun main(): kotlin.Unit