[FIR] Implement FirNativeThreadLocalChecker

* INAPPLICABLE_THREAD_LOCAL
* INAPPLICABLE_THREAD_LOCAL_TOP_LEVEL
This commit is contained in:
Ivan Kochurkin
2022-06-29 18:14:49 +03:00
parent 987137cf76
commit a44d5bf52f
11 changed files with 99 additions and 89 deletions
@@ -1,71 +0,0 @@
// 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
}
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// FILE: annotation.kt
package kotlin.native.concurrent
@@ -65,7 +65,7 @@ class Bar2 {
}
}
@ThreadLocal
<!INAPPLICABLE_THREAD_LOCAL!>@ThreadLocal<!>
enum class Color(var rgb: Int) {
RED(0xFF0000),
GREEN(0x00FF00),