JVM_IR indy-SAM conversions: prohibit in crossinline lambdas
KT-44278 KT-26060 KT-42621
This commit is contained in:
@@ -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
-2
@@ -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
@@ -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()
|
||||
Reference in New Issue
Block a user