| // DISABLE_NATIVE: gcType=NOOP | |
| import kotlin.native.ref.WeakReference | |
| import kotlin.native.runtime.GC | |
| import kotlin.native.NoInline | |
| import kotlin.test.* | |
| @OptIn(kotlin.experimental.ExperimentalNativeApi::class) | |
| @NoInline | |
| private fun makeWeakRef(create: () -> Any) = WeakReference(create()) | |
| @OptIn(kotlin.native.runtime.NativeRuntimeApi::class, kotlin.experimental.ExperimentalNativeApi::class) | |
| private fun ensureGetsCollected(create: () -> Any) { | |
| val ref = makeWeakRef(create) | |
| GC.collect() | |
| assertNull(ref.get()) | |
| } | |
| @OptIn(kotlin.experimental.ExperimentalNativeApi::class) | |
| @Test | |
| fun test() { | |
| ensureGetsCollected { Throwable() } | |
| ensureGetsCollected { | |
| val throwable = Throwable() | |
| throwable.getStackTrace() | |
| throwable | |
| } | |
| } |