Files
kotlin-fork/kotlin-native/backend.native/tests/interop/objc/illegal_sharing.kt
T
Vsevolod Tolstopyatov af9252aa96 Mark all Worker-related API as obsolete.
* Explain what obsolete means and why workers are obsolete
* Add some documentation to workers to explain its common pitfalls

^KT-54702


Merge-request: KT-MR-9563
Merged-by: Vsevolod Tolstopyatov <qwwdfsad@gmail.com>
2023-04-19 09:28:23 +00:00

33 lines
701 B
Kotlin

@file:OptIn(FreezingIsDeprecated::class, ObsoleteWorkersApi::class)
import kotlin.native.concurrent.*
import kotlin.test.*
import platform.Foundation.*
import platform.darwin.NSObject
fun Worker.runInWorker(block: () -> Unit) {
this.execute(TransferMode.SAFE, { block.freeze() }) {
it()
}.result
}
private class NSObjectImpl : NSObject() {
var x = 111
}
// Also see counterpart in interop/objc/tests/sharing.kt
fun main() = withWorker {
val obj = NSObjectImpl()
val array: NSArray = NSMutableArray().apply {
addObject(obj)
}
assertFalse(obj.isFrozen)
println("Before")
runInWorker {
array.objectAtIndex(0)
}
println("After")
}