JVM_IR indy-SAM conversions: prohibit in crossinline lambdas

KT-44278 KT-26060 KT-42621
This commit is contained in:
Dmitry Petrov
2021-01-27 15:39:48 +03:00
parent ad1d80d700
commit f0abd8bc68
16 changed files with 317 additions and 149 deletions
@@ -0,0 +1,20 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// FILE: 1.kt
inline fun cross(crossinline fn: () -> String) : Any =
object {
override fun toString(): String = fn()
}
fun interface IFoo {
fun foo(): String
}
fun foo(iFoo: IFoo) = iFoo.foo()
// FILE: 2.kt
fun box() =
cross {
foo { "OK" }
}.toString()
@@ -0,0 +1,26 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// FILE: 1.kt
class C {
fun test() =
cross {
foo { "OK" }
}.toString()
}
inline fun cross(crossinline fn: () -> String) : Any =
object {
override fun toString(): String = fn()
}
fun interface IFoo {
fun foo(): String
}
fun foo(iFoo: IFoo) = iFoo.foo()
// FILE: 2.kt
fun box() =
C().test()
@@ -2,12 +2,12 @@
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// WITH_RUNTIME
// FILE: inlineFunInDifferentPackage.kt
// FILE: 2.kt
import a.*
fun box() = test { k -> "O" + k }
// FILE: a.kt
// FILE: 1.kt
package a
fun interface IFoo {
@@ -2,6 +2,7 @@
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// WITH_RUNTIME
// FILE: 1.kt
fun interface IFoo {
fun foo()
}
@@ -13,6 +14,7 @@ inline fun twice(fn: () -> Unit) {
fn()
}
// FILE: 2.kt
fun box(): String {
var test = 0
twice {
@@ -0,0 +1,19 @@
// TARGET_BACKEND: JVM
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
fun interface IFoo {
fun foo(): String
}
fun foo(iFoo: IFoo) = iFoo.foo()
open class C1 {
open fun test() = foo { "O" }
}
class C2 : C1() {
override fun test() = foo { "K" }
}
fun box() =
C1().test() + C2().test()