Files
kotlin-fork/compiler/testData/diagnostics/tests/valueClasses/delegatedPropertyInValueClass.kt
T
Ilmir Usmanov 92f1681de0 Value classes: treat @JvmInline value classes as inline classes
Report error on value classes without @JvmInline annotation.
Do not check for @JvmInline annotation in value classes since
it breaks reflection.
2020-11-27 23:52:06 +01:00

33 lines
873 B
Kotlin
Vendored

// !LANGUAGE: +InlineClasses
package kotlin
annotation class JvmInline
class Val {
operator fun getValue(thisRef: Any?, kProp: Any?) = 1
}
class Var {
operator fun getValue(thisRef: Any?, kProp: Any?) = 2
operator fun setValue(thisRef: Any?, kProp: Any?, value: Int) {}
}
object ValObject {
operator fun getValue(thisRef: Any?, kProp: Any?) = 1
}
object VarObject {
operator fun getValue(thisRef: Any?, kProp: Any?) = 2
operator fun setValue(thisRef: Any?, kProp: Any?, value: Int) {}
}
@JvmInline
value class Z(val data: Int) {
val testVal <!DELEGATED_PROPERTY_INSIDE_INLINE_CLASS!>by Val()<!>
var testVar <!DELEGATED_PROPERTY_INSIDE_INLINE_CLASS!>by Var()<!>
val testValBySingleton <!DELEGATED_PROPERTY_INSIDE_INLINE_CLASS!>by ValObject<!>
var testVarBySingleton <!DELEGATED_PROPERTY_INSIDE_INLINE_CLASS!>by VarObject<!>
}