c7435ba760
We are going to deprecate `WITH_RUNTIME` directive. The main reason behind this change is that `WITH_STDLIB` directive better describes its meaning, specifically it will add kotlin stdlib to test's classpath.
31 lines
743 B
Kotlin
Vendored
31 lines
743 B
Kotlin
Vendored
// TARGET_BACKEND: JVM
|
|
// IGNORE_BACKEND: JVM
|
|
// WITH_STDLIB
|
|
|
|
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()
|
|
}
|