Update kotlin metadata jvm library to 0.3.0
RELNOTES: Update kotlin metadata jvm library to 0.3.0
Using the kotlin 1.3 compiler with R8 processed libraries will no longer
work because of breaking changes to how metadata is written.
Bug: 187781614
Change-Id: I29f76dc2beb3abef9a4e2496387640597628a45d
diff --git a/build.gradle b/build.gradle
index c38b5a0..17206b1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -46,7 +46,7 @@
// The kotlin version is only here to specify the kotlin language level,
// all kotlin compilations are done in tests.
kotlinVersion = '1.5.0'
- kotlinExtMetadataJVMVersion = '0.2.0'
+ kotlinExtMetadataJVMVersion = '0.3.0'
smaliVersion = '2.2b4'
errorproneVersion = '2.3.2'
testngVersion = '6.10'
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
index 883be66..373a5d2 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
@@ -29,10 +29,10 @@
ImmutableMap.of();
abstract boolean rewrite(
- Consumer<KmAnnotationArgument<?>> consumer, AppView<?> appView, NamingLens namingLens);
+ Consumer<KmAnnotationArgument> consumer, AppView<?> appView, NamingLens namingLens);
private static KotlinAnnotationArgumentInfo createArgument(
- KmAnnotationArgument<?> arg, DexItemFactory factory) {
+ KmAnnotationArgument arg, DexItemFactory factory) {
if (arg instanceof KClassValue) {
return KotlinAnnotationClassValueInfo.create((KClassValue) arg, factory);
} else if (arg instanceof EnumValue) {
@@ -47,7 +47,7 @@
}
static Map<String, KotlinAnnotationArgumentInfo> create(
- Map<String, KmAnnotationArgument<?>> arguments, DexItemFactory factory) {
+ Map<String, KmAnnotationArgument> arguments, DexItemFactory factory) {
if (arguments.isEmpty()) {
return EMPTY_ARGUMENTS;
}
@@ -59,14 +59,17 @@
private static class KotlinAnnotationClassValueInfo extends KotlinAnnotationArgumentInfo {
private final KotlinTypeReference value;
+ private final int arrayDimensionCount;
- private KotlinAnnotationClassValueInfo(KotlinTypeReference value) {
+ private KotlinAnnotationClassValueInfo(KotlinTypeReference value, int arrayDimensionCount) {
this.value = value;
+ this.arrayDimensionCount = arrayDimensionCount;
}
private static KotlinAnnotationClassValueInfo create(KClassValue arg, DexItemFactory factory) {
return new KotlinAnnotationClassValueInfo(
- KotlinTypeReference.fromBinaryName(arg.getValue(), factory));
+ KotlinTypeReference.fromBinaryName(arg.getClassName(), factory),
+ arg.getArrayDimensionCount());
}
@Override
@@ -76,9 +79,9 @@
@Override
boolean rewrite(
- Consumer<KmAnnotationArgument<?>> consumer, AppView<?> appView, NamingLens namingLens) {
+ Consumer<KmAnnotationArgument> consumer, AppView<?> appView, NamingLens namingLens) {
return value.toRenamedBinaryNameOrDefault(
- rewrittenValue -> consumer.accept(new KClassValue(rewrittenValue)),
+ rewrittenValue -> consumer.accept(new KClassValue(rewrittenValue, arrayDimensionCount)),
appView,
namingLens,
ClassClassifiers.anyName);
@@ -108,7 +111,7 @@
@Override
boolean rewrite(
- Consumer<KmAnnotationArgument<?>> consumer, AppView<?> appView, NamingLens namingLens) {
+ Consumer<KmAnnotationArgument> consumer, AppView<?> appView, NamingLens namingLens) {
return enumClassName.toRenamedBinaryNameOrDefault(
rewrittenEnumClassName ->
consumer.accept(new EnumValue(rewrittenEnumClassName, enumEntryName)),
@@ -129,7 +132,7 @@
private static KotlinAnnotationAnnotationValueInfo create(
AnnotationValue arg, DexItemFactory factory) {
return new KotlinAnnotationAnnotationValueInfo(
- KotlinAnnotationInfo.create(arg.getValue(), factory));
+ KotlinAnnotationInfo.create(arg.getAnnotation(), factory));
}
@Override
@@ -139,7 +142,7 @@
@Override
boolean rewrite(
- Consumer<KmAnnotationArgument<?>> consumer, AppView<?> appView, NamingLens namingLens) {
+ Consumer<KmAnnotationArgument> consumer, AppView<?> appView, NamingLens namingLens) {
return value.rewrite(
rewrittenAnnotation -> {
if (rewrittenAnnotation != null) {
@@ -163,11 +166,11 @@
}
private static KotlinAnnotationArrayValueInfo create(ArrayValue arg, DexItemFactory factory) {
- if (arg.getValue().isEmpty()) {
+ if (arg.getElements().isEmpty()) {
return EMPTY;
}
ImmutableList.Builder<KotlinAnnotationArgumentInfo> builder = ImmutableList.builder();
- for (KmAnnotationArgument<?> argument : arg.getValue()) {
+ for (KmAnnotationArgument argument : arg.getElements()) {
builder.add(createArgument(argument, factory));
}
return new KotlinAnnotationArrayValueInfo(builder.build());
@@ -182,8 +185,8 @@
@Override
boolean rewrite(
- Consumer<KmAnnotationArgument<?>> consumer, AppView<?> appView, NamingLens namingLens) {
- List<KmAnnotationArgument<?>> rewrittenArguments = new ArrayList<>();
+ Consumer<KmAnnotationArgument> consumer, AppView<?> appView, NamingLens namingLens) {
+ List<KmAnnotationArgument> rewrittenArguments = new ArrayList<>();
boolean rewritten = false;
for (KotlinAnnotationArgumentInfo kotlinAnnotationArgumentInfo : value) {
rewritten |=
@@ -203,13 +206,13 @@
private static class KotlinAnnotationPrimitiveArgumentInfo extends KotlinAnnotationArgumentInfo {
- private final KmAnnotationArgument<?> argument;
+ private final KmAnnotationArgument argument;
- private KotlinAnnotationPrimitiveArgumentInfo(KmAnnotationArgument<?> argument) {
+ private KotlinAnnotationPrimitiveArgumentInfo(KmAnnotationArgument argument) {
this.argument = argument;
}
- private static KotlinAnnotationPrimitiveArgumentInfo create(KmAnnotationArgument<?> argument) {
+ private static KotlinAnnotationPrimitiveArgumentInfo create(KmAnnotationArgument argument) {
return new KotlinAnnotationPrimitiveArgumentInfo(argument);
}
@@ -220,7 +223,7 @@
@Override
boolean rewrite(
- Consumer<KmAnnotationArgument<?>> consumer, AppView<?> appView, NamingLens namingLens) {
+ Consumer<KmAnnotationArgument> consumer, AppView<?> appView, NamingLens namingLens) {
consumer.accept(argument);
return false;
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
index fd036d8..cbdd76e 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
@@ -63,7 +63,7 @@
return;
}
String classifier = DescriptorUtils.descriptorToKotlinClassifier(renamedDescriptor);
- Map<String, KmAnnotationArgument<?>> rewrittenArguments = new LinkedHashMap<>();
+ Map<String, KmAnnotationArgument> rewrittenArguments = new LinkedHashMap<>();
arguments.forEach(
(key, arg) ->
rewritten.or(
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
index f2891c4..aa3731f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
@@ -52,6 +52,8 @@
private final String packageName;
private final KotlinLocalDelegatedPropertyInfo localDelegatedProperties;
private final int[] metadataVersion;
+ private final String inlineClassUnderlyingPropertyName;
+ private final KotlinTypeInfo inlineClassUnderlyingType;
// List of tracked assignments of kotlin metadata.
private final KotlinMetadataMembersTracker originalMembersWithKotlinInfo;
@@ -73,6 +75,8 @@
String packageName,
KotlinLocalDelegatedPropertyInfo localDelegatedProperties,
int[] metadataVersion,
+ String inlineClassUnderlyingPropertyName,
+ KotlinTypeInfo inlineClassUnderlyingType,
KotlinMetadataMembersTracker originalMembersWithKotlinInfo) {
this.flags = flags;
this.name = name;
@@ -91,6 +95,8 @@
this.packageName = packageName;
this.localDelegatedProperties = localDelegatedProperties;
this.metadataVersion = metadataVersion;
+ this.inlineClassUnderlyingPropertyName = inlineClassUnderlyingPropertyName;
+ this.inlineClassUnderlyingType = inlineClassUnderlyingType;
this.originalMembersWithKotlinInfo = originalMembersWithKotlinInfo;
}
@@ -172,6 +178,8 @@
KotlinLocalDelegatedPropertyInfo.create(
JvmExtensionsKt.getLocalDelegatedProperties(kmClass), factory, reporter),
metadataVersion,
+ kmClass.getInlineClassUnderlyingPropertyName(),
+ KotlinTypeInfo.create(kmClass.getInlineClassUnderlyingType(), factory, reporter),
originalMembersWithKotlinInfo);
}
@@ -353,6 +361,12 @@
// TODO(b/154347404): Understand enum entries.
kmClass.getEnumEntries().addAll(enumEntries);
rewritten |= versionRequirements.rewrite(kmClass::visitVersionRequirement);
+ if (inlineClassUnderlyingPropertyName != null && inlineClassUnderlyingType != null) {
+ kmClass.setInlineClassUnderlyingPropertyName(inlineClassUnderlyingPropertyName);
+ rewritten |=
+ inlineClassUnderlyingType.rewrite(
+ kmClass::visitInlineClassUnderlyingType, appView, namingLens);
+ }
JvmClassExtensionVisitor extensionVisitor =
(JvmClassExtensionVisitor) kmClass.visitExtensions(JvmClassExtensionVisitor.TYPE);
extensionVisitor.visitModuleName(moduleName);
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
index fbfb3bb..ee9ea2c 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataWriter.java
@@ -325,6 +325,22 @@
appendKmType(nextIndent, sb, kmType);
});
});
+ if (kmClass.getInlineClassUnderlyingPropertyName() != null) {
+ appendKeyValue(
+ indent,
+ "inlineClassUnderlyingPropertyName",
+ sb,
+ kmClass.getInlineClassUnderlyingPropertyName());
+ }
+ if (kmClass.getInlineClassUnderlyingType() != null) {
+ appendKeyValue(
+ indent,
+ "inlineClassUnderlyingType",
+ sb,
+ nextIndent -> {
+ appendKmType(nextIndent, sb, kmClass.getInlineClassUnderlyingType());
+ });
+ }
String companionObject = kmClass.getCompanionObject();
appendKeyValue(
indent, "enumEntries", sb, "[" + StringUtils.join(",", kmClass.getEnumEntries()) + "]");
@@ -769,7 +785,7 @@
"arguments",
sb,
nextIndent -> {
- Map<String, KmAnnotationArgument<?>> arguments = kmAnnotation.getArguments();
+ Map<String, KmAnnotationArgument> arguments = kmAnnotation.getArguments();
appendKmList(
nextIndent,
"{ key: String, value: KmAnnotationArgument<?> }",
@@ -795,9 +811,9 @@
}
private static void appendKmArgument(
- String indent, StringBuilder sb, KmAnnotationArgument<?> annotationArgument) {
+ String indent, StringBuilder sb, KmAnnotationArgument annotationArgument) {
if (annotationArgument instanceof KmAnnotationArgument.ArrayValue) {
- List<KmAnnotationArgument<?>> value = ((ArrayValue) annotationArgument).getValue();
+ List<KmAnnotationArgument> value = ((ArrayValue) annotationArgument).getElements();
appendKmList(
indent,
"ArrayValue",
diff --git a/src/test/java/com/android/tools/r8/KotlinCompilerTool.java b/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
index f830f0e..33152f1 100644
--- a/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
+++ b/src/test/java/com/android/tools/r8/KotlinCompilerTool.java
@@ -35,6 +35,8 @@
KOTLINC_1_4_20("kotlin-compiler-1.4.20"),
KOTLINC_1_5_0("kotlin-compiler-1.5.0");
+ public static final KotlinCompilerVersion MIN_SUPPORTED_VERSION = KOTLINC_1_4_20;
+
private final String folder;
KotlinCompilerVersion(String folder) {
diff --git a/src/test/java/com/android/tools/r8/KotlinTestParameters.java b/src/test/java/com/android/tools/r8/KotlinTestParameters.java
index 5c85355..4306e53 100644
--- a/src/test/java/com/android/tools/r8/KotlinTestParameters.java
+++ b/src/test/java/com/android/tools/r8/KotlinTestParameters.java
@@ -93,6 +93,11 @@
return this;
}
+ public Builder withCompilersStartingFromIncluding(KotlinCompilerVersion version) {
+ withCompilerFilter(c -> c.isGreaterThanOrEqualTo(version));
+ return this;
+ }
+
public KotlinTestParametersCollection build() {
List<KotlinTestParameters> testParameters = new ArrayList<>();
int index = 0;
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 c16c2f5..c030f80 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
@@ -6,7 +6,10 @@
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
+import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertThrows;
import com.android.tools.r8.KotlinCompilerTool.KotlinCompiler;
import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
@@ -72,6 +75,11 @@
.addClasspathFiles(getKotlinStdlibJar(kotlinc), getKotlinAnnotationJar(kotlinc))
.addKeepAllClassesRule()
.addKeepAllAttributes()
+ .addOptionsModification(
+ options -> {
+ // Ensure that we rewrite the metadata with kotlin-metadata-jvm library.
+ options.testing.keepMetadataInR8IfNotRewritten = false;
+ })
.compile()
.writeToZip();
Path stdLibJar =
@@ -85,8 +93,15 @@
.assertAllWarningMessagesMatch(
equalTo("Resource 'META-INF/MANIFEST.MF' already exists."))
.writeToZip();
- // TODO(b/187781614): This is expected to fail when upgrading.
- runTest(KotlinCompilerVersion.KOTLINC_1_3_72, libJar, stdLibJar);
+ AssertionError assertionError =
+ assertThrows(
+ AssertionError.class,
+ () -> {
+ runTest(KotlinCompilerVersion.KOTLINC_1_3_72, libJar, stdLibJar);
+ });
+ assertThat(
+ assertionError.getMessage(),
+ containsString("compiled with an incompatible version of Kotlin"));
}
@Test
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataPrimitiveTypeRewriteTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataPrimitiveTypeRewriteTest.java
index cfa333f..a9732a4 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataPrimitiveTypeRewriteTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataPrimitiveTypeRewriteTest.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
@@ -35,7 +36,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataPrimitiveTypeRewriteTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java
index cccbde4..5c9a639 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAnnotationTest.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndNotRenamed;
@@ -62,7 +63,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteAnnotationTest(
@@ -167,14 +171,14 @@
assertEquals(
DescriptorUtils.getBinaryNameFromJavaType(PKG_LIB) + "/AnnoWithClassArr",
annotation.getClassName());
- Map<String, KmAnnotationArgument<?>> arguments = annotation.getArguments();
+ Map<String, KmAnnotationArgument> arguments = annotation.getArguments();
assertEquals(1, arguments.size());
ArrayValue classes = (ArrayValue) arguments.get("classes");
assertEquals(
- "KClassValue(value=" + foo.getFinalBinaryName() + ")",
- classes.getValue().get(0).toString());
+ "KClassValue(className=" + foo.getFinalBinaryName() + ", arrayDimensionCount=0)",
+ classes.getElements().get(0).toString());
assertEquals(
- "KClassValue(value=" + bar.getFinalBinaryName() + ")",
- classes.getValue().get(1).toString());
+ "KClassValue(className=" + bar.getFinalBinaryName() + ", arrayDimensionCount=0)",
+ classes.getElements().get(1).toString());
}
}
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java
index 527269c..e37b5fd 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteFlexibleUpperBoundTest.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -43,7 +44,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteFlexibleUpperBoundTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInClasspathTypeTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInClasspathTypeTest.java
index 4c712d3..0785411 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInClasspathTypeTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInClasspathTypeTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isExtensionFunction;
@@ -38,7 +39,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInClasspathTypeTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java
index 0cedda8..6e754e1 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInCompanionTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -47,7 +48,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInCompanionTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionFunctionTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionFunctionTest.java
index bc5f909..a95ed25 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionFunctionTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInExtensionFunctionTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isExtensionFunction;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -44,7 +45,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInExtensionFunctionTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionTest.java
index 24a19d3..14d1497 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isExtensionFunction;
@@ -42,7 +43,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInFunctionTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionWithVarargTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionWithVarargTest.java
index ec249cb..c2c61a6 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionWithVarargTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInFunctionWithVarargTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isExtensionFunction;
@@ -43,7 +44,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInFunctionWithVarargTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInNestedClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInNestedClassTest.java
index f2aa77d..24e7a56 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInNestedClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInNestedClassTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.utils.DescriptorUtils.descriptorToJavaType;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndNotRenamed;
@@ -36,7 +37,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInNestedClassTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInParameterTypeTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInParameterTypeTest.java
index 27ee400..59d3258 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInParameterTypeTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInParameterTypeTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -35,7 +36,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInParameterTypeTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTest.java
index 6bb1804..ebafde8 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTest.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.kotlin.metadata;
import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_5_0;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isExtensionProperty;
@@ -42,7 +43,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInPropertyTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTypeTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTypeTest.java
index 28721c8..e0233d9 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTypeTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInPropertyTypeTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -35,7 +36,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInPropertyTypeTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInReturnTypeTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInReturnTypeTest.java
index 225ac74..ac35453 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInReturnTypeTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInReturnTypeTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
@@ -35,7 +36,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInReturnTypeTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSuperTypeTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSuperTypeTest.java
index ccc94e5..ffa0888 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSuperTypeTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSuperTypeTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndNotRenamed;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
@@ -35,7 +36,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInSuperTypeTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
index 0585af6..32be357 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinReflectJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
@@ -65,7 +66,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInTypeAliasTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java
index eddf514..d5342de 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeArgumentsTest.java
@@ -3,6 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isDexClass;
@@ -42,8 +43,8 @@
private static final String LIB_PKG = PKG + ".typeargument_lib.";
- private static int FLAG_NONE = 0;
- private static int FLAG_REIFIED = 1;
+ private static final int FLAG_NONE = 0;
+ private static final int FLAG_REIFIED = 1;
private static final String EXPECTED =
StringUtils.lines(
@@ -80,7 +81,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewriteInTypeArgumentsTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePrunedObjectsTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePrunedObjectsTest.java
index 71b041c..9b8a8e7 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePrunedObjectsTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewritePrunedObjectsTest.java
@@ -4,6 +4,7 @@
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.MIN_SUPPORTED_VERSION;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static junit.framework.TestCase.assertEquals;
import static org.hamcrest.CoreMatchers.not;
@@ -39,7 +40,10 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- getKotlinTestParameters().withAllCompilersAndTargetVersions().build());
+ getKotlinTestParameters()
+ .withCompilersStartingFromIncluding(MIN_SUPPORTED_VERSION)
+ .withAllTargetVersions()
+ .build());
}
public MetadataRewritePrunedObjectsTest(
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteValueClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteValueClassTest.java
index e5c7a51..cc26b5c 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteValueClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteValueClassTest.java
@@ -4,17 +4,18 @@
package com.android.tools.r8.kotlin.metadata;
+import static com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion.KOTLINC_1_5_0;
+import static com.android.tools.r8.ToolHelper.KotlinTargetVersion.JAVA_8;
import static com.android.tools.r8.ToolHelper.getKotlinAnnotationJar;
import static com.android.tools.r8.ToolHelper.getKotlinStdlibJar;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.StringContains.containsString;
import static org.junit.Assert.assertNull;
-import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
import com.android.tools.r8.KotlinTestParameters;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.ToolHelper;
-import com.android.tools.r8.ToolHelper.KotlinTargetVersion;
import com.android.tools.r8.kotlin.KotlinMetadataWriter;
import com.android.tools.r8.shaking.ProguardKeepAttributes;
import com.android.tools.r8.utils.DescriptorUtils;
@@ -44,10 +45,9 @@
public static Collection<Object[]> data() {
return buildParameters(
getTestParameters().withCfRuntimes().build(),
- // TODO(b/193765243): This should be run for all later compilers.
getKotlinTestParameters()
- .withCompiler(KotlinCompilerVersion.KOTLINC_1_5_0)
- .withTargetVersion(KotlinTargetVersion.JAVA_8)
+ .withCompilersStartingFromIncluding(KOTLINC_1_5_0)
+ .withTargetVersion(JAVA_8)
.build());
}
@@ -134,6 +134,10 @@
String expected = KotlinMetadataWriter.kotlinMetadataToString("", originalMetadata);
String actual = KotlinMetadataWriter.kotlinMetadataToString("", rewrittenMetadata);
TestCase.assertEquals(expected, actual);
+ if (r8Clazz.getFinalName().equals(PKG_LIB + ".Name")) {
+ assertThat(actual, containsString("inlineClassUnderlyingPropertyName"));
+ assertThat(actual, containsString("inlineClassUnderlyingType"));
+ }
}
}
}