Rename LocalClassFinder -> DirectoryBasedClassFinder

It was never related to local classes
This commit is contained in:
Alexander Udalov
2015-02-26 15:06:02 +03:00
parent e136025ac5
commit 71a3f35b7e
3 changed files with 26 additions and 26 deletions
@@ -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 {
@@ -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
) )
@@ -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()}")