5480faf5c5
#KT-6007 #KT-16445 #KT-17753 #KT-22488 #KT-23881 #KT-24135 #KT-26360 #KT-27427 #KT-27449 #KT-27830 #KT-28042 #KT-29595 #KT-30708 #KT-32793
31 lines
744 B
Kotlin
Vendored
31 lines
744 B
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// IGNORE_BACKEND: JVM
|
|
// WITH_RUNTIME
|
|
|
|
class ShouldBeCaptured
|
|
class ShouldNOTBeCaptured
|
|
|
|
class ClassWithCallback {
|
|
var someCallback: (() -> Unit)? = null
|
|
|
|
fun checkFields(): String {
|
|
for (field in someCallback!!.javaClass.declaredFields) {
|
|
val value = field.get(someCallback!!)
|
|
if (value is ShouldNOTBeCaptured) throw AssertionError("Leaked value")
|
|
}
|
|
return "OK"
|
|
}
|
|
}
|
|
|
|
fun box(): String {
|
|
val toCapture = ShouldBeCaptured()
|
|
val notToCapture = ShouldNOTBeCaptured()
|
|
|
|
val classWithCallback = ClassWithCallback()
|
|
classWithCallback.apply {
|
|
someCallback = { toCapture }
|
|
notToCapture
|
|
}
|
|
return classWithCallback.checkFields()
|
|
}
|