блоке. контракт InvocationKind = AT_LEAST_ONCE указывает на это же. однако студия ругается. если инициализацию перенести непосредственно в runFunction в temp метод - все ок. так и должно работать и студия просто не анализарует так глубоко или это баг?
class TestContract {
private var someVar: String
init {
temp {
initVarAndOtherStuff()
}
}
fun restart() {
initVarAndOtherStuff()
}
@OptIn(ExperimentalContracts::class)
private fun temp(runFunction: () -> Unit) {
contract {
callsInPlace(runFunction, kotlin.contracts.InvocationKind.AT_LEAST_ONCE)
}
runFunction()
}
private fun initVarAndOtherStuff() {
someVar = "new val"
}
}
кмк, анализатор зайдёт в заинлайненную лямбду, но не в тело initVarAndOtherStuff
Обсуждают сегодня