Revert "Update Kotlin Metadata library to versin 0.9.0"
This reverts commit 519b6a2ec3d8abe919cc1454f562626bf0d27e65.
This has to wait until the Metadata library has been updated in
downstream repositories.
Change-Id: I761727bc7e79a7b430d993801e63341eb4dd411d
Bug: b/315252098
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index effc693..fe9bd92 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -356,7 +356,7 @@
const val javassist = "3.29.2-GA"
const val junitVersion = "4.13-beta-2"
const val kotlinVersion = "1.9.0"
- const val kotlinMetadataVersion = "0.9.0"
+ const val kotlinMetadataVersion = "0.7.0"
const val mockito = "2.10.0"
const val smaliVersion = "3.0.3"
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
index 7ade086..91d36c7 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
@@ -25,7 +25,7 @@
import java.util.function.Consumer;
import java.util.function.Supplier;
import kotlin.Metadata;
-import kotlinx.metadata.jvm.JvmMetadataVersion;
+import kotlinx.metadata.InconsistentKotlinMetadataException;
import kotlinx.metadata.jvm.KotlinClassMetadata;
import kotlinx.metadata.jvm.KotlinClassMetadata.FileFacade;
import kotlinx.metadata.jvm.KotlinClassMetadata.MultiFileClassFacade;
@@ -181,9 +181,9 @@
Integer xi = extraInt == null ? null : (Integer) extraInt.value.getBoxedValue();
try {
- return KotlinClassMetadata.readStrict(
+ return KotlinClassMetadata.read(
new KotlinMetadataAnnotationWrapper(k, mv, d1, d2, xs, pn, xi));
- } catch (ClassCastException | IllegalArgumentException | MetadataError e) {
+ } catch (ClassCastException | InconsistentKotlinMetadataException | MetadataError e) {
throw new KotlinMetadataException(e);
}
}
@@ -196,29 +196,15 @@
return (Integer) kind.value.getBoxedValue();
}
- public static Metadata extractMetadataWithPossiblyUnsupportedMetadataVersion(
- KotlinClassMetadata kMetadata) {
- JvmMetadataVersion version = kMetadata.getVersion();
- if (version.getMajor() == 1 && version.getMinor() < 4) {
- // From version 0.8.0 the kotlin metadata library cannot write metadata below Kotlin version
- // 1.4. The writer can be tricked by temporarily setting a high enough version.
- kMetadata.setVersion(KotlinJvmMetadataVersionUtils.MIN_SUPPORTED_VERSION);
- Metadata metadata = kMetadata.write();
- kMetadata.setVersion(version);
- return metadata;
- }
- return kMetadata.write();
- }
-
public static KotlinClassLevelInfo createKotlinInfo(
Kotlin kotlin,
DexClass clazz,
KotlinClassMetadata kMetadata,
AppView<?> appView,
Consumer<DexEncodedMethod> keepByteCode) {
- Metadata metadata = extractMetadataWithPossiblyUnsupportedMetadataVersion(kMetadata);
+ Metadata metadata = kMetadata.getAnnotationData$kotlinx_metadata_jvm();
String packageName = metadata.pn();
- int[] metadataVersion = KotlinJvmMetadataVersionUtils.toIntArray(kMetadata.getVersion());
+ int[] metadataVersion = metadata.mv();
if (kMetadata instanceof KotlinClassMetadata.Class) {
return KotlinClassInfo.create(
(KotlinClassMetadata.Class) kMetadata,
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java
deleted file mode 100644
index acf75d3..0000000
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMetadataVersionUtils.java
+++ /dev/null
@@ -1,16 +0,0 @@
-// Copyright (c) 2024, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-package com.android.tools.r8.kotlin;
-
-import kotlinx.metadata.jvm.JvmMetadataVersion;
-
-public class KotlinJvmMetadataVersionUtils {
-
- public static JvmMetadataVersion MIN_SUPPORTED_VERSION = new JvmMetadataVersion(1, 4, 0);
-
- public static int[] toIntArray(JvmMetadataVersion version) {
- return new int[] {version.getMajor(), version.getMinor(), version.getPatch()};
- }
-}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
index 149fec9..d34a84f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataAnnotationWrapper.java
@@ -56,12 +56,10 @@
}
public static KotlinMetadataAnnotationWrapper wrap(KotlinClassMetadata classMetadata) {
- Metadata annotationData =
- KotlinClassMetadataReader.extractMetadataWithPossiblyUnsupportedMetadataVersion(
- classMetadata);
+ Metadata annotationData = classMetadata.getAnnotationData$kotlinx_metadata_jvm();
return new KotlinMetadataAnnotationWrapper(
annotationData.k(),
- KotlinJvmMetadataVersionUtils.toIntArray(classMetadata.getVersion()),
+ annotationData.mv(),
annotationData.d1(),
annotationData.d2(),
annotationData.xs(),
diff --git a/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java b/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
index 76c2314..9504a38 100644
--- a/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
+++ b/src/main/java/com/android/tools/r8/naming/KotlinModuleSynthesizer.java
@@ -24,9 +24,7 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
-import kotlinx.metadata.jvm.JvmMetadataVersion;
-import kotlinx.metadata.jvm.KmModule;
-import kotlinx.metadata.jvm.KotlinModuleMetadata;
+import kotlinx.metadata.jvm.KotlinModuleMetadata.Writer;
/**
* The kotlin module synthesizer will scan through all file facades and multiclass files to figure
@@ -157,7 +155,7 @@
}
}
Collections.sort(packagesSorted);
- KmModule kmModule = new KmModule();
+ Writer writer = new Writer();
for (String newPackage : packagesSorted) {
// Calling other visitors than visitPackageParts are currently not supported.
// https://github.com/JetBrains/kotlin/blob/master/libraries/kotlinx-metadata/
@@ -176,15 +174,14 @@
newMultiFiles.put(classPart, rewrittenName);
});
});
- kmModule.visitPackageParts(
+ writer.visitPackageParts(
newPackage,
newFacades.getOrDefault(newPackage, Collections.emptyList()),
newMultiFiles);
}
return Optional.of(
DataEntryResource.fromBytes(
- new KotlinModuleMetadata(kmModule, new JvmMetadataVersion(metadataVersion.get()))
- .write(),
+ writer.write(metadataVersion.get()),
"META-INF/" + moduleName + ".kotlin_module",
Origin.unknown()));
}
diff --git a/third_party/dependencies.tar.gz.sha1 b/third_party/dependencies.tar.gz.sha1
index c77fcde..a916904 100644
--- a/third_party/dependencies.tar.gz.sha1
+++ b/third_party/dependencies.tar.gz.sha1
@@ -1 +1 @@
-b1520ee9ab7d1f9f6ce8f264d9b9629dc43222ac
\ No newline at end of file
+b359a23d49694aabe18bf8c47b2bf3e5b1b77322
\ No newline at end of file
diff --git a/tools/create_local_maven_with_dependencies.py b/tools/create_local_maven_with_dependencies.py
index 5ee21aa..c151352 100755
--- a/tools/create_local_maven_with_dependencies.py
+++ b/tools/create_local_maven_with_dependencies.py
@@ -24,7 +24,7 @@
ASM_VERSION = '9.6' # When updating update tools/asmifier.py and Toolhelper as well.
ESPRESSO_VERSION = '3.0.0'
FASTUTIL_VERSION = '7.2.1'
-KOTLIN_METADATA_VERSION = '0.9.0'
+KOTLIN_METADATA_VERSION = '0.7.0'
KOTLIN_VERSION = '1.9.20'
GUAVA_VERSION = '32.1.2-jre'
GSON_VERSION = '2.10.1'