From 28be3a0dbcad42ac1b56f51ed01fdcf73de4a9c8 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Fri, 30 Apr 2021 17:44:54 +0300 Subject: [PATCH] [FIR] Replace Path with String in KotlinJvmBinaryClass.containingLibrary This is needed because :core:deserialization.common.jvm uses JDK 6 --- .../KotlinDeserializedJvmSymbolsProvider.kt | 10 ++++++++-- .../kotlin/load/kotlin/VirtualFileKotlinClass.kt | 6 ++---- .../kotlin/load/kotlin/KotlinJvmBinaryClass.kt | 3 +-- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt index 4e9d31e5a0e..839ee532aab 100644 --- a/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt +++ b/compiler/fir/java/src/org/jetbrains/kotlin/fir/java/deserialization/KotlinDeserializedJvmSymbolsProvider.kt @@ -31,6 +31,8 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData +import java.nio.file.Path +import java.nio.file.Paths @ThreadSafeMutableState class KotlinDeserializedJvmSymbolsProvider( @@ -56,7 +58,7 @@ class KotlinDeserializedJvmSymbolsProvider( val facadeFqName = facadeName?.let { JvmClassName.byInternalName(it).fqNameForTopLevelClassMaybeWithDollars } val facadeBinaryClass = facadeFqName?.let { kotlinClassFinder.findKotlinClass(ClassId.topLevel(it)) } - val moduleData = moduleDataProvider.getModuleData(kotlinJvmBinaryClass.containingLibrary) ?: return@mapNotNull null + val moduleData = moduleDataProvider.getModuleData(kotlinJvmBinaryClass.containingLibrary.toPath()) ?: return@mapNotNull null val header = kotlinJvmBinaryClass.classHeader val data = header.data ?: header.incompatibleData ?: return@mapNotNull null @@ -115,7 +117,7 @@ class KotlinDeserializedJvmSymbolsProvider( nameResolver, classProto, JvmBinaryAnnotationDeserializer(session, kotlinClass.kotlinJvmBinaryClass, kotlinClassFinder, kotlinClass.byteContent), - kotlinClass.kotlinJvmBinaryClass.containingLibrary, + kotlinClass.kotlinJvmBinaryClass.containingLibrary.toPath(), KotlinJvmBinarySourceElement(kotlinClass.kotlinJvmBinaryClass), classPostProcessor = { loadAnnotationsFromClassFile(kotlinClass, it) } ) @@ -165,4 +167,8 @@ class KotlinDeserializedJvmSymbolsProvider( return classId.relativeClassName.topLevelName() !in knownNames } } + + private fun String?.toPath(): Path? { + return this?.let { Paths.get(it) } + } } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileKotlinClass.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileKotlinClass.kt index 9e194392729..56549178692 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileKotlinClass.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/VirtualFileKotlinClass.kt @@ -26,8 +26,6 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.util.PerformanceCounter import java.io.FileNotFoundException import java.io.IOException -import java.nio.file.Path -import java.nio.file.Paths class VirtualFileKotlinClass private constructor( val file: VirtualFile, @@ -40,8 +38,8 @@ class VirtualFileKotlinClass private constructor( override val location: String get() = file.path - override val containingLibrary: Path? - get() = file.path.split("!/").firstOrNull()?.let { Paths.get(it) } + override val containingLibrary: String? + get() = file.path.split("!/").firstOrNull() override fun getFileContents(): ByteArray { try { diff --git a/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryClass.kt b/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryClass.kt index ec0bce7d816..059ddfbe7a4 100644 --- a/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryClass.kt +++ b/core/deserialization.common.jvm/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryClass.kt @@ -10,7 +10,6 @@ import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue -import java.nio.file.Path interface KotlinJvmBinaryClass { val classId: ClassId @@ -20,7 +19,7 @@ interface KotlinJvmBinaryClass { */ val location: String - val containingLibrary: Path? + val containingLibrary: String? get() = null fun loadClassAnnotations(visitor: AnnotationVisitor, cachedContents: ByteArray?)