blob: a34cc06912a3bb161f17908c8d2fdb95a2c9b672 [file]
// ISSUE: KT-89982
// RUN_PIPELINE_TILL: CODEGEN
// LANGUAGE: +FullValueClasses
@file:OptIn(ExperimentalNativeApi::class)
import kotlin.experimental.ExperimentalNativeApi
import kotlin.native.ref.WeakReference
import kotlin.native.ref.createCleaner
value class Full(val a: Int, val b: Int)
value class Single(val a: Int)
class Identity
fun test(full: Full, single: Single, int: Int, identity: Identity) {
WeakReference(<!IDENTITY_SENSITIVE_OPERATIONS_WITH_VALUE_TYPE!>full<!>)
WeakReference(<!IDENTITY_SENSITIVE_OPERATIONS_WITH_VALUE_TYPE!>single<!>)
WeakReference(<!IDENTITY_SENSITIVE_OPERATIONS_WITH_VALUE_TYPE!>int<!>)
WeakReference(identity)
// A cleaner runs when the cleaner itself is collected, not its resource, so the resource may be a value.
createCleaner(full) {}
createCleaner(identity) {}
createCleaner(cleanupAction = {}, resource = full)
createCleaner(cleanupAction = {}, resource = identity)
}