// DISABLE_NATIVE: gcType=NOOP import kotlin.test.* import kotlin.native.ref.* data class Data(val s: String) @OptIn(kotlin.experimental.ExperimentalNativeApi::class) fun localWeak(): WeakReference { val x = Data("Hello") val weak = WeakReference(x) assertSame(x, weak.get()) return weak } @OptIn(kotlin.experimental.ExperimentalNativeApi::class) fun multiWeak(): Array> { val x = Data("Hello") val weaks = Array(100, { WeakReference(x) } ) weaks.forEach { it -> if (it.get()?.s != "Hello") throw Error("bad reference") } return weaks } @OptIn(kotlin.native.runtime.NativeRuntimeApi::class, kotlin.experimental.ExperimentalNativeApi::class) @Test fun runTest() { val weak = localWeak() kotlin.native.runtime.GC.collect() assertNull(weak.get()) val weaks = multiWeak() kotlin.native.runtime.GC.collect() weaks.forEach { it -> if (it.get()?.s != null) throw Error("not null") } }