Rename LocalClassFinder -> DirectoryBasedClassFinder
It was never related to local classes
This commit is contained in:
+17
-17
@@ -16,24 +16,24 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.decompiler.stubBuilder
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.compiled.ClsStubBuilder
|
||||
import com.intellij.psi.impl.compiled.ClassFileStubBuilder
|
||||
import com.intellij.psi.stubs.PsiFileStub
|
||||
import com.intellij.util.cls.ClsFormatException
|
||||
import com.intellij.util.indexing.FileContent
|
||||
import com.intellij.psi.stubs.PsiFileStub
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.psi.impl.compiled.ClassFileStubBuilder
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.LocalClassFinder
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.LocalClassDataFinder
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.LoggingErrorReporter
|
||||
import org.jetbrains.kotlin.idea.decompiler.isKotlinInternalCompiledFile
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.DirectoryBasedClassFinder
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.DirectoryBasedDataFinder
|
||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.LoggingErrorReporter
|
||||
import org.jetbrains.kotlin.load.java.JvmAnnotationNames
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinBinaryClassCache
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatibleClassKind
|
||||
import org.jetbrains.kotlin.load.kotlin.header.isCompatiblePackageFacadeKind
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.psi.JetFile
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||
|
||||
public class KotlinClsStubBuilder : ClsStubBuilder() {
|
||||
override fun getStubVersion() = ClassFileStubBuilder.STUB_VERSION + 1
|
||||
@@ -81,10 +81,10 @@ public class KotlinClsStubBuilder : ClsStubBuilder() {
|
||||
}
|
||||
|
||||
private fun createStubBuilderComponents(file: VirtualFile, packageFqName: FqName): ClsStubBuilderComponents {
|
||||
val localClassFinder = LocalClassFinder(file.getParent()!!, packageFqName)
|
||||
val localClassDataFinder = LocalClassDataFinder(localClassFinder, LOG)
|
||||
val annotationLoader = AnnotationLoaderForStubBuilder(localClassFinder, LoggingErrorReporter(LOG))
|
||||
return ClsStubBuilderComponents(localClassDataFinder, annotationLoader)
|
||||
val classFinder = DirectoryBasedClassFinder(file.getParent()!!, packageFqName)
|
||||
val classDataFinder = DirectoryBasedDataFinder(classFinder, LOG)
|
||||
val annotationLoader = AnnotationLoaderForStubBuilder(classFinder, LoggingErrorReporter(LOG))
|
||||
return ClsStubBuilderComponents(classDataFinder, annotationLoader)
|
||||
}
|
||||
|
||||
class object {
|
||||
|
||||
+5
-5
@@ -56,7 +56,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
||||
|
||||
override fun resolveDeclarationsInPackage(packageFqName: FqName): Collection<DeclarationDescriptor> {
|
||||
assert(packageFqName == directoryPackageFqName, "Was called for $packageFqName but only $directoryPackageFqName is expected.")
|
||||
val binaryClassForPackageClass = localClassFinder.findKotlinClass(PackageClassUtils.getPackageClassId(packageFqName))
|
||||
val binaryClassForPackageClass = classFinder.findKotlinClass(PackageClassUtils.getPackageClassId(packageFqName))
|
||||
val annotationData = binaryClassForPackageClass?.getClassHeader()?.annotationData
|
||||
if (annotationData == null) {
|
||||
LOG.error("Could not read annotation data for $packageFqName from ${binaryClassForPackageClass?.getClassId()}")
|
||||
@@ -72,13 +72,13 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
||||
return membersScope.getDescriptors()
|
||||
}
|
||||
|
||||
private val localClassFinder = LocalClassFinder(packageDirectory, directoryPackageFqName)
|
||||
private val localClassDataFinder = LocalClassDataFinder(localClassFinder, LOG)
|
||||
private val classFinder = DirectoryBasedClassFinder(packageDirectory, directoryPackageFqName)
|
||||
private val classDataFinder = DirectoryBasedDataFinder(classFinder, LOG)
|
||||
|
||||
private val storageManager = LockBasedStorageManager.NO_LOCKS
|
||||
|
||||
private val annotationAndConstantLoader =
|
||||
BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, localClassFinder, LoggingErrorReporter(LOG))
|
||||
BinaryClassAnnotationAndConstantLoaderImpl(moduleDescriptor, storageManager, classFinder, LoggingErrorReporter(LOG))
|
||||
|
||||
private val packageFragmentProvider = object : PackageFragmentProvider {
|
||||
override fun getPackageFragments(fqName: FqName): List<PackageFragmentDescriptor> {
|
||||
@@ -105,7 +105,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
||||
}
|
||||
|
||||
private val deserializationComponents = DeserializationComponents(
|
||||
storageManager, moduleDescriptor, localClassDataFinder, annotationAndConstantLoader, packageFragmentProvider,
|
||||
storageManager, moduleDescriptor, classDataFinder, annotationAndConstantLoader, packageFragmentProvider,
|
||||
ResolveEverythingToKotlinAnyLocalClassResolver, JavaFlexibleTypeCapabilitiesDeserializer
|
||||
)
|
||||
|
||||
|
||||
+4
-4
@@ -32,7 +32,7 @@ import org.jetbrains.kotlin.serialization.deserialization.ClassDataFinder
|
||||
import org.jetbrains.kotlin.serialization.deserialization.LocalClassResolver
|
||||
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
|
||||
|
||||
class LocalClassFinder(
|
||||
class DirectoryBasedClassFinder(
|
||||
val packageDirectory: VirtualFile,
|
||||
val directoryPackageFqName: FqName
|
||||
) : KotlinClassFinder {
|
||||
@@ -51,12 +51,12 @@ class LocalClassFinder(
|
||||
}
|
||||
}
|
||||
|
||||
class LocalClassDataFinder(
|
||||
val localClassFinder: LocalClassFinder,
|
||||
class DirectoryBasedDataFinder(
|
||||
val classFinder: DirectoryBasedClassFinder,
|
||||
val log: Logger
|
||||
) : ClassDataFinder {
|
||||
override fun findClassData(classId: ClassId): ClassData? {
|
||||
val binaryClass = localClassFinder.findKotlinClass(classId) ?: return null
|
||||
val binaryClass = classFinder.findKotlinClass(classId) ?: return null
|
||||
val data = binaryClass.getClassHeader().annotationData
|
||||
if (data == null) {
|
||||
log.error("Annotation data missing for ${binaryClass.getClassId()}")
|
||||
Reference in New Issue
Block a user