// FIR_IDENTICAL // FILE: annotation.kt package kotlin.native.concurrent @Target(AnnotationTarget.PROPERTY, AnnotationTarget.CLASS) @Retention(AnnotationRetention.BINARY) annotation class ThreadLocal // FILE: test.kt import kotlin.native.concurrent.ThreadLocal import kotlin.reflect.KProperty data class Point(val x: Double, val y: Double) class Person(val name: String) { @ThreadLocal var surname: String? = null } abstract class Information { abstract var field: String } @ThreadLocal class Person1(val name: String) { var surname: String? = null @ThreadLocal val extraInfo: Information = object : Information() { override var field: String = "extra info" } } @ThreadLocal val extraInfo: Information = object : Information() { override var field: String = "extra info" } @ThreadLocal val point1 = Point(1.0, 1.0) @ThreadLocal val cornerPoint: Point get() = point1 @ThreadLocal val person = Person1("aaaaa") class Delegate { val value: Int = 10 operator fun getValue(thisRef: Any?, property: KProperty<*>): Int { return value } operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Int) { } } @ThreadLocal var field1: Int by Delegate() @ThreadLocal object WithDelegate { var field1: Int by Delegate() } class Bar { @ThreadLocal object SomeObject { var field1: Int = 10 var field2: String? = null } }