54 lines
1.8 KiB
Kotlin
Vendored
54 lines
1.8 KiB
Kotlin
Vendored
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
|
|
|
import kotlin.reflect.KProperty
|
|
|
|
class CustomDelegate {
|
|
operator fun get(thisRef: Any?, prop: KProperty<*>): String = prop.name
|
|
operator fun set(thisRef: Any?, prop: KProperty<*>, value: String) {}
|
|
}
|
|
|
|
class OkDelegate {
|
|
operator fun getValue(thisRef: Any?, prop: KProperty<*>): String = prop.name
|
|
operator fun setValue(thisRef: Any?, prop: KProperty<*>, value: String) {}
|
|
}
|
|
|
|
class CustomDelegate2 {
|
|
operator fun get(thisRef: Any?, prop: KProperty<*>): String = prop.name
|
|
operator fun set(thisRef: Any?, prop: KProperty<*>, value: String) {}
|
|
|
|
operator fun getValue(thisRef: Any?, prop: KProperty<*>): Int = 5
|
|
operator fun setValue(thisRef: Any?, prop: KProperty<*>, value: Int) {}
|
|
}
|
|
|
|
class CustomDelegate3 {
|
|
operator fun get(thisRef: Any?, prop: KProperty<*>): String = prop.name
|
|
operator fun set(thisRef: Any?, prop: KProperty<*>, value: String) {}
|
|
}
|
|
|
|
operator fun OkDelegate.get(thisRef: Any?, prop: KProperty<*>): Int = 4
|
|
operator fun OkDelegate.set(thisRef: Any?, prop: KProperty<*>, value: Int) {}
|
|
|
|
operator fun CustomDelegate3.getValue(thisRef: Any?, prop: KProperty<*>): Int = 4
|
|
operator fun CustomDelegate3.setValue(thisRef: Any?, prop: KProperty<*>, value: Int) {}
|
|
|
|
class Example {
|
|
|
|
var a by <!DELEGATE_SPECIAL_FUNCTION_MISSING, DELEGATE_SPECIAL_FUNCTION_MISSING!>CustomDelegate()<!>
|
|
val aval by <!DELEGATE_SPECIAL_FUNCTION_MISSING!>CustomDelegate()<!>
|
|
var b by OkDelegate()
|
|
var c by CustomDelegate2()
|
|
var d by CustomDelegate3()
|
|
|
|
fun test() {
|
|
requireString(<!ARGUMENT_TYPE_MISMATCH!>a<!>)
|
|
requireString(<!ARGUMENT_TYPE_MISMATCH!>aval<!>)
|
|
requireString(b)
|
|
requireInt(c)
|
|
requireInt(d)
|
|
}
|
|
|
|
fun requireString(s: String) {}
|
|
fun requireInt(n: Int) {}
|
|
|
|
}
|