[FIR] Replace Path with String in KotlinJvmBinaryClass.containingLibrary
This is needed because :core:deserialization.common.jvm uses JDK 6
This commit is contained in:
committed by
TeamCityServer
parent
2abed7161b
commit
28be3a0dbc
+8
-2
@@ -31,6 +31,8 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData
|
import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData
|
||||||
|
import java.nio.file.Path
|
||||||
|
import java.nio.file.Paths
|
||||||
|
|
||||||
@ThreadSafeMutableState
|
@ThreadSafeMutableState
|
||||||
class KotlinDeserializedJvmSymbolsProvider(
|
class KotlinDeserializedJvmSymbolsProvider(
|
||||||
@@ -56,7 +58,7 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
val facadeFqName = facadeName?.let { JvmClassName.byInternalName(it).fqNameForTopLevelClassMaybeWithDollars }
|
val facadeFqName = facadeName?.let { JvmClassName.byInternalName(it).fqNameForTopLevelClassMaybeWithDollars }
|
||||||
val facadeBinaryClass = facadeFqName?.let { kotlinClassFinder.findKotlinClass(ClassId.topLevel(it)) }
|
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 header = kotlinJvmBinaryClass.classHeader
|
||||||
val data = header.data ?: header.incompatibleData ?: return@mapNotNull null
|
val data = header.data ?: header.incompatibleData ?: return@mapNotNull null
|
||||||
@@ -115,7 +117,7 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
nameResolver,
|
nameResolver,
|
||||||
classProto,
|
classProto,
|
||||||
JvmBinaryAnnotationDeserializer(session, kotlinClass.kotlinJvmBinaryClass, kotlinClassFinder, kotlinClass.byteContent),
|
JvmBinaryAnnotationDeserializer(session, kotlinClass.kotlinJvmBinaryClass, kotlinClassFinder, kotlinClass.byteContent),
|
||||||
kotlinClass.kotlinJvmBinaryClass.containingLibrary,
|
kotlinClass.kotlinJvmBinaryClass.containingLibrary.toPath(),
|
||||||
KotlinJvmBinarySourceElement(kotlinClass.kotlinJvmBinaryClass),
|
KotlinJvmBinarySourceElement(kotlinClass.kotlinJvmBinaryClass),
|
||||||
classPostProcessor = { loadAnnotationsFromClassFile(kotlinClass, it) }
|
classPostProcessor = { loadAnnotationsFromClassFile(kotlinClass, it) }
|
||||||
)
|
)
|
||||||
@@ -165,4 +167,8 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
return classId.relativeClassName.topLevelName() !in knownNames
|
return classId.relativeClassName.topLevelName() !in knownNames
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun String?.toPath(): Path? {
|
||||||
|
return this?.let { Paths.get(it) }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-4
@@ -26,8 +26,6 @@ import org.jetbrains.kotlin.name.ClassId
|
|||||||
import org.jetbrains.kotlin.util.PerformanceCounter
|
import org.jetbrains.kotlin.util.PerformanceCounter
|
||||||
import java.io.FileNotFoundException
|
import java.io.FileNotFoundException
|
||||||
import java.io.IOException
|
import java.io.IOException
|
||||||
import java.nio.file.Path
|
|
||||||
import java.nio.file.Paths
|
|
||||||
|
|
||||||
class VirtualFileKotlinClass private constructor(
|
class VirtualFileKotlinClass private constructor(
|
||||||
val file: VirtualFile,
|
val file: VirtualFile,
|
||||||
@@ -40,8 +38,8 @@ class VirtualFileKotlinClass private constructor(
|
|||||||
override val location: String
|
override val location: String
|
||||||
get() = file.path
|
get() = file.path
|
||||||
|
|
||||||
override val containingLibrary: Path?
|
override val containingLibrary: String?
|
||||||
get() = file.path.split("!/").firstOrNull()?.let { Paths.get(it) }
|
get() = file.path.split("!/").firstOrNull()
|
||||||
|
|
||||||
override fun getFileContents(): ByteArray {
|
override fun getFileContents(): ByteArray {
|
||||||
try {
|
try {
|
||||||
|
|||||||
+1
-2
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
|
|||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue
|
import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue
|
||||||
import java.nio.file.Path
|
|
||||||
|
|
||||||
interface KotlinJvmBinaryClass {
|
interface KotlinJvmBinaryClass {
|
||||||
val classId: ClassId
|
val classId: ClassId
|
||||||
@@ -20,7 +19,7 @@ interface KotlinJvmBinaryClass {
|
|||||||
*/
|
*/
|
||||||
val location: String
|
val location: String
|
||||||
|
|
||||||
val containingLibrary: Path?
|
val containingLibrary: String?
|
||||||
get() = null
|
get() = null
|
||||||
|
|
||||||
fun loadClassAnnotations(visitor: AnnotationVisitor, cachedContents: ByteArray?)
|
fun loadClassAnnotations(visitor: AnnotationVisitor, cachedContents: ByteArray?)
|
||||||
|
|||||||
Reference in New Issue
Block a user