// DIAGNOSTICS: -UNUSED_VARIABLE // WITH_STDLIB // ISSUE: KT-57456, KT-57608 @file:OptIn(ExperimentalContracts::class) import kotlin.contracts.ExperimentalContracts import kotlin.contracts.contract import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty enum class Enum { A { val aInside = value val bInside = inPlaceRun { value } val cInside = nonInPlaceRun { value } val dInside by value val eInside by inPlaceDelegate { value } val fInside by nonInPlaceDelegate { value } }, B { init { val aInit = value val bInit = inPlaceRun { value } val cInit = nonInPlaceRun { value } val dInit by value val eInit by inPlaceDelegate { value } val fInit by nonInPlaceDelegate { value } } }, C { init { class Local { val aInside = value val bInside = inPlaceRun { value } val cInside = nonInPlaceRun { value } val dInside by value val eInside by inPlaceDelegate { value } val fInside by nonInPlaceDelegate { value } init { val aInit = value val bInit = inPlaceRun { value } val cInit = nonInPlaceRun { value } val dInit by value val eInit by inPlaceDelegate { value } val fInit by nonInPlaceDelegate { value } } fun localFun() { val a = value val b = inPlaceRun { value } val c = nonInPlaceRun { value } val d by value val e by inPlaceDelegate { value } val f by nonInPlaceDelegate { value } } } } }, D { init { val someObj = object { val aInside = value val bInside = inPlaceRun { value } val cInside = nonInPlaceRun { value } val dInside by value val eInside by inPlaceDelegate { value } val fInside by nonInPlaceDelegate { value } init { val aInit = value val bInit = inPlaceRun { value } val cInit = nonInPlaceRun { value } val dInit by value val eInit by inPlaceDelegate { value } val fInit by nonInPlaceDelegate { value } } fun localFun() { val a = value val b = inPlaceRun { value } val c = nonInPlaceRun { value } val d by value val e by inPlaceDelegate { value } val f by nonInPlaceDelegate { value } } } } } ; val a = value val b = inPlaceRun { value } val c = nonInPlaceRun { value } val d by value val e by inPlaceDelegate { value } val f by nonInPlaceDelegate { value } companion object { val value = "value" } } enum class EnumWithConstructor(val a: String, val b: String, val c: String) { A( a = value, b = inPlaceRun { value }, c = nonInPlaceRun { value } ); companion object { val value = "value" } } operator fun T.provideDelegate(thisRef: Any?, prop: KProperty<*>): ReadOnlyProperty = ReadOnlyProperty { _, _ -> this } inline fun inPlaceRun(block: () -> T): T { contract { callsInPlace(block) } return block() } fun nonInPlaceRun(block: () -> T): T { return block() } inline fun inPlaceDelegate(block: () -> T): ReadOnlyProperty { contract { callsInPlace(block) } val value = block() return ReadOnlyProperty { _, _ -> value } } fun nonInPlaceDelegate(block: () -> T): ReadOnlyProperty { return ReadOnlyProperty { _, _ -> block() } }