Fix extension receiver coercion for inline classes

#KT-27031
This commit is contained in:
Dmitry Petrov
2018-09-21 17:13:00 +03:00
parent 20d7210239
commit 2e6d53a43f
11 changed files with 176 additions and 1 deletions
@@ -0,0 +1,10 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
fun <T> T.runExt(fn: T.() -> String) = fn()
inline class R(private val r: Int) {
fun test() = runExt { "OK" }
}
fun box() = R(0).test()
@@ -0,0 +1,10 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
fun <T> T.runExt(fn: T.() -> String) = fn()
inline class R(private val r: String) {
fun test() = runExt { r }
}
fun box() = R("OK").test()
@@ -0,0 +1,10 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
inline fun <T> T.runInlineExt(fn: T.() -> String) = fn()
inline class R(private val r: Int) {
fun test() = runInlineExt { "OK" }
}
fun box() = R(0).test()
@@ -0,0 +1,10 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
inline fun <T> T.runInlineExt(fn: T.() -> String) = fn()
inline class R(private val r: String) {
fun test() = runInlineExt { r }
}
fun box() = R("OK").test()
@@ -0,0 +1,10 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
inline fun runInline(fn: () -> String) = fn()
inline class R(private val r: Int) {
fun test() = runInline { "OK" }
}
fun box() = R(0).test()