Fix tests to pass with Kotlin 2.1.0-dev-5441
Bug: b/362426281
Change-Id: I176ebaea955b027840ed72a423d5a7d389bf4398
diff --git a/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java b/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java
index e3944a9..be29d6d 100644
--- a/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/KotlinClassInlinerTest.java
@@ -8,6 +8,7 @@
import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_5_0;
import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_6_0;
import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_9_21;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLIN_DEV;
import static com.android.tools.r8.utils.codeinspector.Matchers.isAbsent;
import static com.android.tools.r8.utils.codeinspector.Matchers.isAbsentIf;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -212,12 +213,26 @@
kotlinParameters
.getCompiler()
.getCompilerVersion()
- .isGreaterThanOrEqualTo(KOTLINC_1_9_21),
+ .isEqualTo(KOTLINC_1_9_21),
i ->
i.assertIsCompleteMergeGroup(
SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 0),
SyntheticItemsTestUtils.syntheticLambdaClass(
- mainKt, 1)))
+ mainKt, 1)),
+ kotlinParameters
+ .getCompiler()
+ .getCompilerVersion()
+ .isEqualTo(KOTLIN_DEV),
+ i -> {
+ ClassReference sequencesKt =
+ Reference.classFromTypeName(
+ "kotlin.sequences.SequencesKt__SequencesKt");
+ i.assertIsCompleteMergeGroup(
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 0),
+ SyntheticItemsTestUtils.syntheticLambdaClass(mainKt, 1),
+ SyntheticItemsTestUtils.syntheticLambdaClass(
+ sequencesKt, 0));
+ })
.assertNoOtherClassesMerged();
} else {
assert kotlinParameters.getLambdaGeneration().isInvokeDynamic()
diff --git a/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java b/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java
index bcb01da..4824bf1 100644
--- a/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/optimize/switches/KotlinEnumSwitchTest.java
@@ -55,6 +55,8 @@
testForR8(parameters.getBackend())
// Use android.jar with java.lang.ClassValue.
.addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.U))
+ // Add java.lang.invoke.LambdaMetafactory for class file generation.
+ .applyIf(parameters.isCfRuntime(), b -> b.addLibraryFiles(ToolHelper.getCoreLambdaStubs()))
.addProgramFiles(
kotlinJars.getForConfiguration(kotlinParameters), kotlinc.getKotlinAnnotationJar())
.addKeepMainRule("enumswitch.EnumSwitchKt")
diff --git a/src/test/java/com/android/tools/r8/kotlin/reflection/ReflectiveConstructionWithInlineClassTest.java b/src/test/java/com/android/tools/r8/kotlin/reflection/ReflectiveConstructionWithInlineClassTest.java
index a5c6dd3..4d28c48 100644
--- a/src/test/java/com/android/tools/r8/kotlin/reflection/ReflectiveConstructionWithInlineClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/reflection/ReflectiveConstructionWithInlineClassTest.java
@@ -119,6 +119,8 @@
@Test
public void testR8KeepDataClass() throws Exception {
configureR8(testForR8(parameters.getBackend()).addDontObfuscate())
+ // Add java.lang.invoke.LambdaMetafactory for class file generation.
+ .applyIf(parameters.isCfRuntime(), b -> b.addLibraryFiles(ToolHelper.getCoreLambdaStubs()))
.compile()
.assertNoErrorMessages()
.apply(KotlinMetadataTestBase::verifyExpectedWarningsFromKotlinReflectAndStdLib)
@@ -130,6 +132,8 @@
public void testR8KeepDataClassAndInlineClass() throws Exception {
configureR8(testForR8(parameters.getBackend()))
.addKeepRules("-keep class " + PKG + ".Value { *; }")
+ // Add java.lang.invoke.LambdaMetafactory for class file generation.
+ .applyIf(parameters.isCfRuntime(), b -> b.addLibraryFiles(ToolHelper.getCoreLambdaStubs()))
.compile()
.assertNoErrorMessages()
.apply(KotlinMetadataTestBase::verifyExpectedWarningsFromKotlinReflectAndStdLib)
diff --git a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/HorizontallyMergedClassesInspector.java b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/HorizontallyMergedClassesInspector.java
index b3ca5e2..04663af 100644
--- a/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/HorizontallyMergedClassesInspector.java
+++ b/src/test/testbase/java/com/android/tools/r8/utils/codeinspector/HorizontallyMergedClassesInspector.java
@@ -136,6 +136,19 @@
return this;
}
+ public HorizontallyMergedClassesInspector applyIf(
+ boolean condition,
+ ThrowableConsumer<HorizontallyMergedClassesInspector> thenConsumer,
+ boolean elseIfCondition,
+ ThrowableConsumer<HorizontallyMergedClassesInspector> elseIfThenConsumer) {
+ if (condition) {
+ thenConsumer.acceptWithRuntimeException(this);
+ } else if (elseIfCondition) {
+ elseIfThenConsumer.acceptWithRuntimeException(this);
+ }
+ return this;
+ }
+
public HorizontallyMergedClassesInspector assertMergedInto(Class<?> from, Class<?> target) {
return assertMergedInto(toDexType(from), toDexType(target));
}