Update Kotlin tests after making 1.9.0 latest stable
Failures from moving Kotlin 1.6.0 to running kotlin_old tests.
Bug: b/317019265
Change-Id: I9d73b054d6bce04a5d0637a71b585f6d5e25ac1b
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java
index 0248459..cc58dbe 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataFirstToLatestTest.java
@@ -100,6 +100,19 @@
assertThat(
assertionError.getMessage(),
containsString("compiled with an incompatible version of Kotlin"));
+ } else if (kotlinParameters.is(KotlinCompilerVersion.KOTLINC_1_6_0)) {
+ AssertionError assertionError =
+ assertThrows(
+ AssertionError.class,
+ () -> {
+ runTest(kotlinParameters.getCompiler().getCompilerVersion(), libJar, stdLibJar);
+ });
+ // TODO(b/317019265): Triage this.
+ assertThat(
+ assertionError.getMessage(),
+ containsString(
+ "Trying to inline an anonymous object which is not part of the public ABI"));
+
} else {
runTest(kotlinParameters.getCompiler().getCompilerVersion(), libJar, stdLibJar);
}
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java
index 6954d57..d732c25 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataVersionNumberBumpTest.java
@@ -8,14 +8,17 @@
import static org.junit.Assert.fail;
import static org.objectweb.asm.Opcodes.ASM7;
+import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.KotlinCompilerTool.KotlinTargetVersion;
import com.android.tools.r8.KotlinTestParameters;
import com.android.tools.r8.R8FullTestBuilder;
import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.graph.DexAnnotationElement;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.shaking.ProguardKeepAttributes;
import com.android.tools.r8.transformers.ClassTransformer;
+import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StreamUtils;
import com.android.tools.r8.utils.ZipUtils;
import com.android.tools.r8.utils.codeinspector.AnnotationSubject;
@@ -58,6 +61,7 @@
final R8FullTestBuilder testBuilder = testForR8(parameters.getBackend());
rewriteMetadataVersion(testBuilder::addProgramClassFileData, new int[] {1, 1, 16});
testBuilder
+ .apply(this::addLibrary)
.addProgramFiles(kotlinc.getKotlinAnnotationJar())
.setMinApi(parameters)
.addOptionsModification(options -> options.testing.keepMetadataInR8IfNotRewritten = false)
@@ -72,6 +76,7 @@
final R8FullTestBuilder testBuilder = testForR8(parameters.getBackend());
rewriteMetadataVersion(testBuilder::addProgramClassFileData, new int[] {1, 4, 0});
testBuilder
+ .apply(this::addLibrary)
.addProgramFiles(kotlinc.getKotlinAnnotationJar())
.setMinApi(parameters)
.addKeepAllClassesRuleWithAllowObfuscation()
@@ -85,6 +90,7 @@
final R8FullTestBuilder testBuilder = testForR8(parameters.getBackend());
rewriteMetadataVersion(testBuilder::addProgramClassFileData, new int[] {1, 4, 2});
testBuilder
+ .apply(this::addLibrary)
.addProgramFiles(kotlinc.getKotlinAnnotationJar())
.setMinApi(parameters)
.addKeepAllClassesRuleWithAllowObfuscation()
@@ -93,6 +99,16 @@
.inspect(inspector -> inspectMetadataVersion(inspector, "1.4.2"));
}
+ private void addLibrary(R8FullTestBuilder testBuilder) {
+ // Starting with version 1.6 kotlin-stdlib references java.lang.annotation.Repeatable. This
+ // annotation was added in Android N.
+ testBuilder.applyIf(
+ kotlinParameters.isNewerThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_6_0)
+ && parameters.isDexRuntime()
+ && parameters.getApiLevel().isLessThan(AndroidApiLevel.N),
+ b -> b.addLibraryFiles(ToolHelper.getAndroidJar(AndroidApiLevel.N)));
+ }
+
private void rewriteMetadataVersion(Consumer<byte[]> rewrittenBytesConsumer, int[] newVersion)
throws IOException {
ZipUtils.iter(