| // RUN_PIPELINE_TILL: CODEGEN | |
| // IGNORE_FIR_DIAGNOSTICS | |
| // ALLOW_KOTLIN_PACKAGE | |
| // 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 | |
| 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) { | |
| } | |
| } | |
| class AtomicInt(var value: Int) | |
| object Foo { | |
| var field1: Int = 10 | |
| val backer2 = AtomicInt(0) | |
| var field2: Int | |
| get() = backer2.value | |
| set(value: Int) { backer2.value = value } | |
| } | |
| object Foo1 { | |
| var field1: Int = 10 | |
| set(value: Int) { backer2.value = value } | |
| val backer2 = AtomicInt(0) | |
| } | |
| object WithDelegate { | |
| var field1: Int by Delegate() | |
| } | |
| @ThreadLocal | |
| object Bar { | |
| var field1: Int = 10 | |
| var field2: String? = null | |
| } | |
| class Foo2 { | |
| companion object { | |
| var field1: Int = 10 | |
| val backer2 = AtomicInt(0) | |
| var field2: Int | |
| get() = backer2.value | |
| set(value: Int) { | |
| backer2.value = value | |
| } | |
| } | |
| } | |
| class Bar2 { | |
| @ThreadLocal | |
| companion object { | |
| var field1: Int = 10 | |
| var field2: String? = null | |
| } | |
| } | |
| <!INAPPLICABLE_THREAD_LOCAL!>@ThreadLocal<!> | |
| enum class Color(var rgb: Int) { | |
| RED(0xFF0000), | |
| GREEN(0x00FF00), | |
| BLUE(0x0000FF) | |
| } | |
| enum class Color1(var rgb: Int) { | |
| RED(0xFF0000), | |
| GREEN(0x00FF00), | |
| BLUE(0x0000FF); | |
| init { this.rgb += 1 } | |
| } | |
| @ThreadLocal | |
| var a = 3 | |
| enum class Color2() { | |
| RED(), | |
| GREEN(), | |
| BLUE(); | |
| var rgb: Int = 2 | |
| set(value: Int) { | |
| a = value | |
| } | |
| } | |
| enum class Color3() { | |
| RED(), | |
| GREEN(), | |
| BLUE(); | |
| var field1: Int by Delegate() | |
| } | |
| enum class Color4 { | |
| RED { | |
| var a = 2 | |
| override fun foo() { a = 42 } | |
| }, | |
| GREEN, | |
| BLUE; | |
| open fun foo() {} | |
| } | |
| var topLevelProperty = "Global var" |