02604060ae
1. Local declarations don't participate in IR-linkage, because they can be referenced only inside the same body -> can be dropped from IR text tests. 2. Mangled names for private declarations computed by descriptors/fir are actually not used anywhere (they are recomputed by IR immediately before serialization of IR). But sometimes such mangled names diverge between K1 and K2 -> don't check them, but always check mangled names computed by IR even for private declarations. 3. Also: Drop DUMP_LOCAL_DECLARATION_SIGNATURES test directive. ^KT-57428 Obsolete ^KT-57430 Obsolete ^KT-57434 Obsolete ^KT-57778 Obsolete ^KT-57775 Obsolete
34 lines
921 B
Kotlin
Vendored
34 lines
921 B
Kotlin
Vendored
// FIR_IDENTICAL
|
|
// WITH_STDLIB
|
|
// WITH_REFLECT
|
|
|
|
import kotlin.properties.ReadWriteProperty
|
|
import kotlin.reflect.KClass
|
|
import kotlin.reflect.KProperty
|
|
|
|
class SettingType<out V : Any>(
|
|
val type : KClass<out V>
|
|
)
|
|
|
|
class SettingReference<V : Any, T : SettingType<V>>(
|
|
var t : T,
|
|
var v : V
|
|
)
|
|
|
|
class IdeWizard {
|
|
var projectTemplate by setting(SettingReference(SettingType(42::class), 42))
|
|
|
|
private fun <V : Any, T : SettingType<V>> setting(reference: SettingReference<V, T>) =
|
|
object : ReadWriteProperty<Any?, V?> {
|
|
override fun setValue(thisRef: Any?, property: KProperty<*>, value: V?) {
|
|
if (value == null) return
|
|
reference.t = SettingType(value::class) as T
|
|
reference.v = value
|
|
}
|
|
|
|
override fun getValue(thisRef: Any?, property: KProperty<*>): V? {
|
|
return reference.v
|
|
}
|
|
}
|
|
}
|