Enable lightweight lambdas (aka invokedynamic) since 2.0

#KT-45375 Fixed
 #KT-58173 Open
This commit is contained in:
Alexander Udalov
2023-04-20 11:07:41 +02:00
committed by Space Team
parent b1b33475fa
commit 3f034e8b67
80 changed files with 4686 additions and 253 deletions
@@ -212,7 +212,7 @@ class MetadataSmokeTest {
fun testDisplayNameSample() {
class A {}
val b: (Int) -> Int = fun(x: Int) = x
val b: (Int) -> Int = @JvmSerializableLambda fun(x: Int) = x
assertEquals("Class .kotlinx/metadata/test/MetadataSmokeTest\$testDisplayNameSample\$A", displayName(A::class.java.getMetadata()))
assertEquals("Lambda <no name provided>", displayName(b::class.java.getMetadata()))
@@ -15,7 +15,7 @@ import kotlin.test.assertFailsWith
class WritersContractTest {
val classMd = WritersContractTest::class.java.getMetadata()
val l: () -> Unit = {}
val l: () -> Unit = @JvmSerializableLambda {}
val lambdaMd = l::class.java.getMetadata()
val fileFacadeMd = Class.forName("kotlinx.metadata.test.testdata.FileFacade").getMetadata()
val multiFileFacadeMd = Class.forName("kotlinx.metadata.test.testdata.MultiFileClassFacade").getMetadata()
@@ -53,25 +53,10 @@ package {
}
// IntersectionTypeInLambdaLiteralAndDelegatedPropertyKt$test$1.class
// ------------------------------------------
lambda {
// signature: invoke(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
local final fun kotlin/Nothing.<anonymous>(it: kotlin/Nothing): kotlin/Any
}
synthetic class
// IntersectionTypeInLambdaLiteralAndDelegatedPropertyKt$test$2.class
// ------------------------------------------
lambda {
// signature: invoke(LInv;LInv;)LInv;
local final fun kotlin/Nothing.<anonymous>(it: kotlin/Nothing): Inv<out kotlin/Any>
}
// IntersectionTypeInLambdaLiteralAndDelegatedPropertyKt$test$d$2.class
// ------------------------------------------
lambda {
// signature: invoke()Ljava/lang/Object;
local final fun <anonymous>(): kotlin/Any
}
synthetic class
// Inv.class
// ------------------------------------------
public final class Inv<T#0 /* T */> : kotlin/Any {
-14
View File
@@ -7,20 +7,6 @@ package {
// module name: test-module
}
// LambdaKt$test$f$1.class
// ------------------------------------------
lambda {
// signature: invoke()V
local final fun <anonymous>(): kotlin/Unit
}
// LambdaKt$test$g$1.class
// ------------------------------------------
lambda {
// signature: invoke(Lkotlin/Unit;[ILjava/util/Set;)Ljava/lang/String;
local final fun kotlin/Unit.<no name provided>(s: kotlin/IntArray?, t: kotlin/collections/Set<kotlin/Double>): kotlin/String
}
// META-INF/test-module.kotlin_module
// ------------------------------------------
module {