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