9dd8eda1c9
Library methods such as 'listOf' are resolved to have the package fragments as their parents, but JVM expects their containing file classes as parents. This fix generates those file classes and uses them as parent replacements for such library methods.
28 lines
653 B
Kotlin
Vendored
28 lines
653 B
Kotlin
Vendored
// WITH_RUNTIME
|
|
|
|
import kotlin.test.*
|
|
|
|
var log: String = ""
|
|
|
|
class MyClass(val value: String)
|
|
|
|
inline fun <T> runLogged(entry: String, action: () -> T): T {
|
|
log += entry
|
|
return action()
|
|
}
|
|
|
|
operator fun MyClass.provideDelegate(host: Any?, p: Any): String =
|
|
runLogged("tdf(${this.value});") { this.value }
|
|
|
|
operator fun String.getValue(receiver: Any?, p: Any): String =
|
|
runLogged("get($this);") { this }
|
|
|
|
val testO by runLogged("O;") { MyClass("O") }
|
|
val testK by runLogged("K;") { "K" }
|
|
val testOK = runLogged("OK;") { testO + testK }
|
|
|
|
fun box(): String {
|
|
assertEquals("O;tdf(O);K;OK;get(O);get(K);", log)
|
|
return testOK
|
|
}
|