Update tests to handle both types of Kotlin lambda generation
Bug: b/326221483
Change-Id: I545b3e2597f3f18dc88a65cf64fbcec323c323b7
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java
index 804dc5b..2c03256 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingCapturesKotlinStyleTest.java
@@ -15,6 +15,8 @@
import com.android.tools.r8.TestRuntime.CfVm;
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -73,7 +75,9 @@
KotlinLambdasInInput lambdasInInput =
KotlinLambdasInInput.create(getProgramFiles(), getTestName());
assertEquals(0, lambdasInInput.getNumberOfJStyleLambdas());
- assertEquals(26, lambdasInInput.getNumberOfKStyleLambdas());
+ assertEquals(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 0 : 26,
+ lambdasInInput.getNumberOfKStyleLambdas());
testForR8(parameters.getBackend())
.addProgramFiles(getProgramFiles())
@@ -97,18 +101,34 @@
return;
}
- inspector
- .assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$2"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$3"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$4"))
- .assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$5"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$6"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$7"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$8"))
- .assertNoOtherClassesMerged();
+ if (kotlinParameters.getLambdaGeneration().isClass()) {
+ inspector
+ .assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$2"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$3"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$4"))
+ .assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$5"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$6"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$7"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$test2$8"))
+ .assertNoOtherClassesMerged();
+ } else {
+ ClassReference mainKt = Reference.classFromTypeName(getMainClassName());
+ inspector
+ .assertIsCompleteMergeGroup(
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 0),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 2),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 3),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 4))
+ .assertIsCompleteMergeGroup(
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 5),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 6),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 7),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 8))
+ .assertNoOtherClassesMerged();
+ }
}
private void inspect(CodeInspector inspector, KotlinLambdasInInput lambdasInInput) {
@@ -118,7 +138,11 @@
presentKStyleLambdas.add(classReference);
}
}
- assertEquals(parameters.isCfRuntime() ? 0 : 5, presentKStyleLambdas.size());
+ assertEquals(
+ parameters.isCfRuntime() || kotlinParameters.getLambdaGeneration().isInvokeDynamic()
+ ? 0
+ : 5,
+ presentKStyleLambdas.size());
}
private String getExpectedOutput() {
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingKeepAttributesKotlinStyleTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingKeepAttributesKotlinStyleTest.java
index 733b7f4..0671aa4 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingKeepAttributesKotlinStyleTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingKeepAttributesKotlinStyleTest.java
@@ -18,6 +18,8 @@
import com.android.tools.r8.TestRuntime.CfVm;
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -84,7 +86,9 @@
KotlinLambdasInInput lambdasInInput =
KotlinLambdasInInput.create(getProgramFiles(), getTestName());
assertEquals(0, lambdasInInput.getNumberOfJStyleLambdas());
- assertEquals(24, lambdasInInput.getNumberOfKStyleLambdas());
+ assertEquals(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 0 : 24,
+ lambdasInInput.getNumberOfKStyleLambdas());
testForR8(parameters.getBackend())
.addProgramFiles(getProgramFiles())
@@ -106,99 +110,135 @@
private void inspect(
HorizontallyMergedClassesInspector inspector, KotlinLambdasInInput lambdasInInput) {
if (parameters.isCfRuntime()) {
- inspector
- .assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$4"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$5"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$6"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$7"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$8"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$9"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$4"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$5"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$6"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$7"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$8"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$9"))
- .assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$2"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$3"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$2"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$3"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testThird$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testThird$2"))
- .assertNoOtherClassesMerged();
+ if (kotlinParameters.getLambdaGeneration().isClass()) {
+ inspector
+ .assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$4"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$5"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$6"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$7"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$8"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$9"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$4"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$5"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$6"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$7"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$8"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$9"))
+ .assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$2"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$3"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$2"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$3"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testThird$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testThird$2"))
+ .assertNoOtherClassesMerged();
+ } else {
+ inspector.assertNoClassesMerged();
+ }
} else {
- inspector
- .assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$2"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$3"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$4"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$2"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$3"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$2"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$3"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testThird$1"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testThird$2"))
- .assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$4"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$5"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$6"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$7"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$8"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testFirst$9"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$4"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$5"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$6"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$7"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$8"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testSecond$9"))
- .assertNoOtherClassesMerged();
+ if (kotlinParameters.getLambdaGeneration().isClass()) {
+ inspector
+ .assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$2"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$3"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(getTestName(), "MainKt$main$4"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$2"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$3"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$2"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$3"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testThird$1"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testThird$2"))
+ .assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$4"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$5"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$6"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$7"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$8"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testFirst$9"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$4"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$5"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$6"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$7"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$8"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testSecond$9"))
+ .assertNoOtherClassesMerged();
+ } else {
+ ClassReference mainKt = Reference.classFromTypeName(getMainClassName());
+ inspector
+ .assertIsCompleteMergeGroup(
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 9),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 10),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 11),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 12),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 13),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 14),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 19),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 18),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 20),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 21),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 22),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 23))
+ .assertIsCompleteMergeGroup(
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 0),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 1),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 2),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 3),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 4),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 5),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 6),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 7),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 8),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 15),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 16),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 17))
+ .assertNoOtherClassesMerged();
+ }
}
}
@@ -209,7 +249,8 @@
lambdasInOutput.add(classReference);
}
}
- assertEquals(2, lambdasInOutput.size());
+ assertEquals(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 0 : 2, lambdasInOutput.size());
}
private String getExpectedOutput() {
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java
index 7d2a464..328ad69 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingSingletonTest.java
@@ -73,7 +73,9 @@
KotlinLambdasInInput lambdasInInput =
KotlinLambdasInInput.create(getProgramFiles(), getTestName());
assertEquals(2, lambdasInInput.getNumberOfJStyleLambdas());
- assertEquals(7, lambdasInInput.getNumberOfKStyleLambdas());
+ assertEquals(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 6 : 7,
+ lambdasInInput.getNumberOfKStyleLambdas());
testForR8(parameters.getBackend())
.addProgramFiles(getProgramFiles())
diff --git a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java
index 05ae91d..5a69bf9 100644
--- a/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/lambda/KotlinLambdaMergingTrivialKotlinStyleTest.java
@@ -15,6 +15,8 @@
import com.android.tools.r8.TestRuntime.CfVm;
import com.android.tools.r8.ToolHelper.DexVm.Version;
import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
import com.android.tools.r8.utils.BooleanUtils;
import com.android.tools.r8.utils.StringUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -73,7 +75,9 @@
KotlinLambdasInInput lambdasInInput =
KotlinLambdasInInput.create(getProgramFiles(), getTestName());
assertEquals(0, lambdasInInput.getNumberOfJStyleLambdas());
- assertEquals(28, lambdasInInput.getNumberOfKStyleLambdas());
+ assertEquals(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 0 : 28,
+ lambdasInInput.getNumberOfKStyleLambdas());
testForR8(parameters.getBackend())
.addProgramFiles(getProgramFiles())
@@ -92,16 +96,33 @@
private void inspect(
HorizontallyMergedClassesInspector inspector, KotlinLambdasInInput lambdasInInput) {
- inspector
- .applyIf(
- parameters.isDexRuntime(),
- i ->
- i.assertIsCompleteMergeGroup(
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testStateless$11"),
- lambdasInInput.getKStyleLambdaReferenceFromTypeName(
- getTestName(), "MainKt$testStateless$12")))
- .assertNoOtherClassesMerged();
+ if (parameters.isCfRuntime()) {
+ inspector.applyIf(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic(),
+ i ->
+ i.assertIsCompleteMergeGroup(
+ Reference.classFromTypeName("kotlin.jvm.functions.Function0"),
+ Reference.classFromTypeName("kotlin.jvm.functions.Function1"),
+ Reference.classFromTypeName("kotlin.jvm.functions.Function2"),
+ Reference.classFromTypeName("kotlin.jvm.functions.Function3"),
+ Reference.classFromTypeName("kotlin.jvm.functions.Function22"))
+ .assertNoOtherClassesMerged());
+ } else {
+ ClassReference mainKt = Reference.classFromTypeName(getMainClassName());
+ inspector.applyIf(
+ kotlinParameters.getLambdaGeneration().isClass(),
+ i ->
+ i.assertIsCompleteMergeGroup(
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testStateless$11"),
+ lambdasInInput.getKStyleLambdaReferenceFromTypeName(
+ getTestName(), "MainKt$testStateless$12")),
+ i ->
+ i.assertIsCompleteMergeGroup(
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 0),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 1))
+ .assertNoOtherClassesMerged());
+ }
}
private void inspect(CodeInspector inspector, KotlinLambdasInInput lambdasInInput) {
@@ -111,7 +132,8 @@
lambdasInOutput.add(classReference);
}
}
- assertEquals(1, lambdasInOutput.size());
+ assertEquals(
+ kotlinParameters.getLambdaGeneration().isInvokeDynamic() ? 0 : 1, lambdasInOutput.size());
}
private String getExpectedOutput() {