Files
kotlin-fork/compiler/testData/codegen/boxInline/simple/kt17431.kt
T
Ivan Kylchik c7435ba760 Replace all occurrences of WITH_RUNTIME with WITH_STDLIB
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.
2021-11-17 15:26:38 +03:00

38 lines
730 B
Kotlin
Vendored

// WITH_STDLIB
// KJS_WITH_FULL_RUNTIME
// FILE: 1.kt
package test
class WeakReference<T>(val value: T)
inline fun <K, V> MutableMap<K, WeakReference<V>>.getOrPutWeak(key: K, defaultValue: ()->V): V {
val value = get(key)?.value
return if (value == null) {
val answer = defaultValue()
put(key, WeakReference(answer))
answer
} else {
value
}
}
// FILE: 2.kt
import test.*
class LabelHolder {
fun test(): String {
return "hello".label
}
private val labels = hashMapOf<String?, WeakReference<String>>()
private val String?.label: String
get(): String = labels.getOrPutWeak(this) { "OK" }
}
fun box(): String {
return LabelHolder().test()
}