// !LANGUAGE: +ValueClasses // WITH_STDLIB // SKIP_TXT // WORKS_WHEN_VALUE_CLASS // FIR_IDENTICAL import kotlin.reflect.KProperty @Repeatable annotation class Ann @[Ann Ann] @JvmInline value class A @Ann constructor( @[Ann Ann] @param:[Ann Ann] @property:[Ann Ann] @field:[Ann Ann] @get:[Ann Ann] val x: Int, @[Ann Ann] @param:[Ann Ann] @property:[Ann Ann] @field:[Ann Ann] @get:[Ann Ann] val y: Int, ) { operator fun getValue(thisRef: Any?, property: KProperty<*>): Int { return 0 } } @[Ann Ann] @JvmInline value class B @Ann constructor( @[Ann Ann] @param:[Ann Ann] @property:[Ann Ann] @field:[Ann Ann] @get:[Ann Ann] val x: A, @[Ann Ann] @param:[Ann Ann] @property:[Ann Ann] @field:[Ann Ann] @get:[Ann Ann] val y: A?, ) { @JvmName("otherName") fun f() = Unit } @[Ann Ann] class C @Ann constructor( @[Ann Ann] @param:[Ann Ann] @property:[Ann Ann] @field:[Ann Ann] @get:[Ann Ann] @set:[Ann Ann] @setparam:[Ann Ann] var x: A, @[Ann Ann] @param:[Ann Ann] @property:[Ann Ann] @field:[Ann Ann] @get:[Ann Ann] @set:[Ann Ann] @setparam:[Ann Ann] var y: A?, ) { @delegate:[Ann Ann] @property:[Ann Ann] @get:[Ann Ann] val z by lazy { A(-100, -200) } @delegate:[Ann Ann] @property:[Ann Ann] @get:[Ann Ann] val c by A(-100, -200) @delegate:[Ann Ann] @property:[Ann Ann] @get:[Ann Ann] val d by ::z @JvmField val e = x init { if (2 + 2 == 4) { @[Ann Ann] val x = 4 @[Ann Ann] val y = A(1, 2) } fun f() { if (2 + 2 == 4) { @[Ann Ann] val x = 4 @[Ann Ann] val y = A(1, 2) } } } } @[Ann Ann] fun @receiver:[Ann Ann] A.t(@[Ann Ann] a: A, @[Ann Ann] b: B, @[Ann Ann] c: C) { if (2 + 2 == 4) { @[Ann Ann] val x = 4 @[Ann Ann] val y = A(1, 2) } fun f() { if (2 + 2 == 4) { @[Ann Ann] val x1 = 4 @[Ann Ann] val y1 = A(1, 2) } } } @[Ann Ann] fun @receiver:[Ann Ann] C.t(@[Ann Ann] a: A, @[Ann Ann] b: B, @[Ann Ann] c: C) = 4 @[Ann Ann] var @receiver:[Ann Ann] A.t @[Ann Ann] get() = A(1, 2) @[Ann Ann] set(@[Ann Ann] _) = Unit @[Ann Ann] var @receiver:[Ann Ann] C.t @[Ann Ann] get() = A(1, 2) @[Ann Ann] set(@[Ann Ann] _) = Unit