JVM_IR indy-lambdas: minor updates and fixes
KT-44278 KT-26060 KT-42621
This commit is contained in:
committed by
TeamCityServer
parent
088448043a
commit
ab20a8ffff
@@ -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
@@ -1,5 +1,4 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
// FILE: 1.kt
|
||||
inline fun cross(crossinline fn: () -> String) : Any =
|
||||
object {
|
||||
override fun toString(): String = fn()
|
||||
}
|
||||
|
||||
fun foo(fn: () -> String) = fn()
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box() =
|
||||
cross {
|
||||
foo { "OK" }
|
||||
}.toString()
|
||||
-22
@@ -1,22 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: 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 foo(fn: () -> String) = fn()
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box() =
|
||||
C().test()
|
||||
|
||||
-16
@@ -1,16 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// 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) }
|
||||
@@ -1,24 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
// WITH_RUNTIME
|
||||
// FILE: 1.kt
|
||||
|
||||
fun foo(fn: () -> Unit) = fn()
|
||||
|
||||
inline fun twice(fn: () -> Unit) {
|
||||
fn()
|
||||
fn()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box(): String {
|
||||
var test = 0
|
||||
twice {
|
||||
foo { test += 1 }
|
||||
}
|
||||
if (test != 2)
|
||||
return "Failed: test=$test"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Vendored
-1
@@ -1,5 +1,4 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
|
||||
Vendored
-2
@@ -1,6 +1,4 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
|
||||
Vendored
-2
@@ -1,6 +1,4 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
|
||||
Vendored
-2
@@ -1,6 +1,4 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
|
||||
-2
@@ -1,6 +1,4 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// IGNORE_BACKEND: JVM
|
||||
// IGNORE_LIGHT_ANALYSIS
|
||||
// JVM_TARGET: 1.8
|
||||
// LAMBDAS: INDY
|
||||
|
||||
|
||||
compiler/testData/codegen/box/invokedynamic/lambdas/inlineClassInSignature/lambdaWithInlineString.kt
Vendored
-2
@@ -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"
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
// 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()
|
||||
@@ -1,26 +0,0 @@
|
||||
// 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()
|
||||
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// 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
|
||||
|
||||
fun interface IFoo {
|
||||
fun foo(k: String): String
|
||||
}
|
||||
|
||||
fun fooK(iFoo: IFoo) = iFoo.foo("K")
|
||||
|
||||
inline fun test(crossinline lambda: (String) -> String) =
|
||||
fooK { k -> lambda(k) }
|
||||
@@ -1,27 +0,0 @@
|
||||
// TARGET_BACKEND: JVM
|
||||
// JVM_TARGET: 1.8
|
||||
// SAM_CONVERSIONS: INDY
|
||||
// WITH_RUNTIME
|
||||
// FILE: 1.kt
|
||||
fun interface IFoo {
|
||||
fun foo()
|
||||
}
|
||||
|
||||
fun foo(iFoo: IFoo) = iFoo.foo()
|
||||
|
||||
inline fun twice(fn: () -> Unit) {
|
||||
fn()
|
||||
fn()
|
||||
}
|
||||
|
||||
// FILE: 2.kt
|
||||
fun box(): String {
|
||||
var test = 0
|
||||
twice {
|
||||
foo { test += 1 }
|
||||
}
|
||||
if (test != 2)
|
||||
return "Failed: test=$test"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user