Drop ClassData and PackageData, rename ClassDataWithSource -> ClassData
Use pairs in JvmProtoBufUtil for simplicity
This commit is contained in:
+4
-7
@@ -34,11 +34,7 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
|
||||
import org.jetbrains.kotlin.serialization.ClassDataWithSource
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
|
||||
import org.jetbrains.kotlin.serialization.deserialization.ContractDeserializer
|
||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents
|
||||
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
|
||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||
import java.io.InputStream
|
||||
@@ -134,7 +130,7 @@ class DirectoryBasedDataFinder(
|
||||
val classFinder: DirectoryBasedClassFinder,
|
||||
val log: Logger
|
||||
) : ClassDataFinder {
|
||||
override fun findClassData(classId: ClassId): ClassDataWithSource? {
|
||||
override fun findClassData(classId: ClassId): ClassData? {
|
||||
val binaryClass = classFinder.findKotlinClass(classId) ?: return null
|
||||
val classHeader = binaryClass.classHeader
|
||||
val data = classHeader.data
|
||||
@@ -148,6 +144,7 @@ class DirectoryBasedDataFinder(
|
||||
return null
|
||||
}
|
||||
|
||||
return ClassDataWithSource(JvmProtoBufUtil.readClassDataFrom(data, strings), KotlinJvmBinarySourceElement(binaryClass))
|
||||
val (nameResolver, classProto) = JvmProtoBufUtil.readClassDataFrom(data, strings)
|
||||
return ClassData(nameResolver, classProto, KotlinJvmBinarySourceElement(binaryClass))
|
||||
}
|
||||
}
|
||||
|
||||
+15
-16
@@ -242,22 +242,21 @@ private class ClassClsStubBuilder(
|
||||
}
|
||||
|
||||
private fun createNestedClassStub(classBody: StubElement<out PsiElement>, nestedClassId: ClassId) {
|
||||
val classDataWithSource = c.components.classDataFinder.findClassData(nestedClassId)
|
||||
if (classDataWithSource == null) {
|
||||
val rootFile = c.components.virtualFileForDebug
|
||||
LOG.error(
|
||||
"Could not find class data for nested class $nestedClassId of class ${nestedClassId.outerClassId}\n" +
|
||||
"Root file: ${rootFile.canonicalPath}\n" +
|
||||
"Dir: ${rootFile.parent.canonicalPath}\n" +
|
||||
"Children:\n" +
|
||||
rootFile.parent.children.sortedBy { it.name }.joinToString(separator = "\n") {
|
||||
"${it.name} (valid: ${it.isValid})"
|
||||
}
|
||||
)
|
||||
return
|
||||
}
|
||||
val (nameResolver, classProto) = classDataWithSource.classData
|
||||
createClassStub(classBody, classProto, nameResolver, nestedClassId, classDataWithSource.sourceElement, c)
|
||||
val (nameResolver, classProto, sourceElement) =
|
||||
c.components.classDataFinder.findClassData(nestedClassId)
|
||||
?: c.components.virtualFileForDebug.let { rootFile ->
|
||||
LOG.error(
|
||||
"Could not find class data for nested class $nestedClassId of class ${nestedClassId.outerClassId}\n" +
|
||||
"Root file: ${rootFile.canonicalPath}\n" +
|
||||
"Dir: ${rootFile.parent.canonicalPath}\n" +
|
||||
"Children:\n" +
|
||||
rootFile.parent.children.sortedBy { it.name }.joinToString(separator = "\n") {
|
||||
"${it.name} (valid: ${it.isValid})"
|
||||
}
|
||||
)
|
||||
return
|
||||
}
|
||||
createClassStub(classBody, classProto, nameResolver, nestedClassId, sourceElement, c)
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
Reference in New Issue
Block a user