JVM_IR indy-lambdas: minor updates and fixes

KT-44278 KT-26060 KT-42621
This commit is contained in:
Dmitry Petrov
2021-01-29 19:14:45 +03:00
committed by TeamCityServer
parent 088448043a
commit ab20a8ffff
40 changed files with 1209 additions and 324 deletions
@@ -0,0 +1,24 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
fun test(
extFn: Int.(
p0: String, p1: String,
p2: Int, p3: Int, p4: Int, p5: Int, p6: Int, p7: Int, p8: Int, p9: Int,
p10: Int, p11: Int, p12: Int, p13: Int, p14: Int, p15: Int, p16: Int, p17: Int, p18: Int, p19: Int,
p20: Int, p21: Int, p22: Int
) -> String
) =
42.extFn("O", "K", 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
fun box() =
test { p0: String, p1: String,
p2: Int, p3: Int, p4: Int, p5: Int, p6: Int, p7: Int, p8: Int, p9: Int,
p10: Int, p11: Int, p12: Int, p13: Int, p14: Int, p15: Int, p16: Int, p17: Int, p18: Int, p19: Int,
p20: Int, p21: Int, p22: Int
->
p0 + p1
}
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -1,5 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -1,6 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -1,6 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -1,6 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -1,6 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -1,6 +1,4 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// IGNORE_LIGHT_ANALYSIS
// JVM_TARGET: 1.8
// LAMBDAS: INDY
@@ -0,0 +1,13 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// JVM_TARGET: 1.8
// LAMBDAS: INDY
// FULL_JDK
fun lambdaIsSerializable(fn: () -> Unit) = fn is java.io.Serializable
fun box(): String {
if (lambdaIsSerializable {})
return "Failed: indy lambdas are not serializable"
return "OK"
}
@@ -0,0 +1,14 @@
// TARGET_BACKEND: JVM
// IGNORE_BACKEND: JVM
// JVM_TARGET: 1.8
// LAMBDAS: INDY
// WITH_RUNTIME
fun lambdaToString(fn: () -> Unit) = fn.toString()
fun box(): String {
val str = lambdaToString {}
if (!str.startsWith("LambdaToStingKt"))
return "Failed: indy lambda toString is inherited from java.lang.Object"
return "OK"
}
@@ -2,15 +2,15 @@
// JVM_TARGET: 1.8
// LAMBDAS: INDY
// WITH_RUNTIME
// FILE: 2.kt
import a.*
fun box() = test { k -> "O" + k }
// FILE: 1.kt
package a
fun fooK(fn: (String) -> String) = fn("K")
inline fun test(crossinline lambda: (String) -> String) =
fooK { k -> lambda(k) }
fooK { k -> lambda(k) }
// FILE: 2.kt
import a.*
fun box() = test { k -> "O" + k }
@@ -2,6 +2,7 @@
// JVM_TARGET: 1.8
// LAMBDAS: INDY
// WITH_RUNTIME
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
fun foo(fn: () -> Unit) = fn()
@@ -2,11 +2,6 @@
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// WITH_RUNTIME
// FILE: 2.kt
import a.*
fun box() = test { k -> "O" + k }
// FILE: 1.kt
package a
@@ -17,4 +12,9 @@ fun interface IFoo {
fun fooK(iFoo: IFoo) = iFoo.foo("K")
inline fun test(crossinline lambda: (String) -> String) =
fooK { k -> lambda(k) }
fooK { k -> lambda(k) }
// FILE: 2.kt
import a.*
fun box() = test { k -> "O" + k }
@@ -2,6 +2,7 @@
// JVM_TARGET: 1.8
// SAM_CONVERSIONS: INDY
// WITH_RUNTIME
// NO_CHECK_LAMBDA_INLINING
// FILE: 1.kt
fun interface IFoo {
fun foo()