From 51cdb981f44a7cd25ae15c06e8e15fb13281f19e Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Fri, 18 Dec 2015 23:24:48 +0300 Subject: [PATCH] Remove obsolete code in IncrementalPackageFragmentProvider --- .../kotlin/fileClasses/JvmFileClassUtil.kt | 7 --- .../IncrementalPackageFragmentProvider.kt | 54 ++++--------------- .../kotlin/load/java/descriptors/util.kt | 37 ++++++------- .../KotlinJvmBinaryPackageSourceElement.kt | 4 +- .../descriptors/DeserializedMemberScope.kt | 8 +-- 5 files changed, 29 insertions(+), 81 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt index 99c3d87f428..1facad29b2c 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/fileClasses/JvmFileClassUtil.kt @@ -16,17 +16,14 @@ package org.jetbrains.kotlin.fileClasses -import com.google.protobuf.MessageLite import com.intellij.psi.util.CachedValueProvider import com.intellij.psi.util.CachedValuesManager import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.load.java.descriptors.getImplClassNameForDeserialized -import org.jetbrains.kotlin.load.java.descriptors.getImplClassNameForProto import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.serialization.deserialization.NameResolver import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor public object JvmFileClassUtil { @@ -70,10 +67,6 @@ public object JvmFileClassUtil { public fun getImplClassName(callable: DeserializedCallableMemberDescriptor): Name? = callable.getImplClassNameForDeserialized() - @JvmStatic - public fun getImplClassName(proto: MessageLite, nameResolver: NameResolver): Name? = - getImplClassNameForProto(proto, nameResolver) - @JvmStatic public fun getHiddenPartFqName(file: KtFile, jvmFileClassAnnotations: ParsedJmvFileClassAnnotations): FqName = file.packageFqName.child(Name.identifier(manglePartName(jvmFileClassAnnotations.name, file.name))) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt index f906e783c3d..d7aec4b175f 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt @@ -16,17 +16,15 @@ package org.jetbrains.kotlin.load.kotlin.incremental -import com.google.protobuf.MessageLite import com.intellij.util.containers.MultiMap -import org.apache.log4j.Logger import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentDescriptor import org.jetbrains.kotlin.descriptors.PackageFragmentProvider import org.jetbrains.kotlin.descriptors.impl.PackageFragmentDescriptorImpl -import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil import org.jetbrains.kotlin.load.kotlin.ModuleMapping import org.jetbrains.kotlin.load.kotlin.PackagePartClassUtils import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache +import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto import org.jetbrains.kotlin.modules.TargetId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name @@ -34,8 +32,6 @@ import org.jetbrains.kotlin.psi.KtFile import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.kotlin.resolve.scopes.ChainedMemberScope import org.jetbrains.kotlin.resolve.scopes.MemberScope -import org.jetbrains.kotlin.serialization.PackageData -import org.jetbrains.kotlin.serialization.ProtoBuf import org.jetbrains.kotlin.serialization.deserialization.DeserializationComponents import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedPackageMemberScope import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil @@ -54,8 +50,6 @@ public class IncrementalPackageFragmentProvider( ) : PackageFragmentProvider { companion object { - private val LOG = Logger.getLogger(IncrementalPackageFragmentProvider::class.java) - public fun fqNamesToLoad(obsoletePackageParts: Collection, sourceFiles: Collection): Set = (obsoletePackageParts.map { JvmClassName.byInternalName(it).packageFqName } + PackagePartClassUtils.getFilesWithCallables(sourceFiles).map { it.packageFqName }).toSet() @@ -118,13 +112,7 @@ public class IncrementalPackageFragmentProvider( allParts.filterNot { it in obsoletePackageParts } } ?: emptyList() - val scopes = actualPackagePartFiles - .mapNotNull { - incrementalCache.getPackagePartData(it) - } - .map { - IncrementalPackageScope(JvmProtoBufUtil.readPackageDataFrom(it.data, it.strings)) - } + val scopes = actualPackagePartFiles.mapNotNull { incrementalCache.getPackagePartData(it) }.map { createPackageScope(it) } if (scopes.isEmpty()) { MemberScope.Empty @@ -152,45 +140,21 @@ public class IncrementalPackageFragmentProvider( if (partsData.isEmpty()) MemberScope.Empty else { - val scopes = partsData.map { IncrementalPackageScope(JvmProtoBufUtil.readPackageDataFrom(it.data, it.strings)) } ChainedMemberScope( "Member scope for incremental compilation: union of multifile class parts data for $multifileClassFqName", - scopes) + partsData.map { createPackageScope(it) } + ) } } override fun getMemberScope(): MemberScope = memberScope() } - private inner class IncrementalPackageScope(val packageData: PackageData) : DeserializedPackageMemberScope( - this@IncrementalPackageFragment, packageData.packageProto, packageData.nameResolver, deserializationComponents, - { listOf() } - ) { - override fun filteredFunctionProtos(protos: Collection): Collection = - filteredMemberProtos(protos) - - override fun filteredPropertyProtos(protos: Collection): Collection = - filteredMemberProtos(protos) - - private fun filteredMemberProtos(allMemberProtos: Collection): Collection { - fun getPackagePart(callable: MessageLite): Name? = - JvmFileClassUtil.getImplClassName(callable, packageData.nameResolver) - - fun shouldSkipPackagePart(name: Name) = - JvmClassName.byFqNameWithoutInnerClasses(fqName.child(name)).internalName in obsoletePackageParts - - if (LOG.isDebugEnabled) { - val allPackageParts = allMemberProtos - .mapNotNull(::getPackagePart) - .toSet() - val skippedPackageParts = allPackageParts.filter { shouldSkipPackagePart(it) } - - LOG.debug("Loading incremental package fragment for package '$fqName'," + - " all package parts: $allPackageParts, skipped parts: $skippedPackageParts") - } - - return allMemberProtos.filter { getPackagePart(it)?.let { !shouldSkipPackagePart(it) } ?: true } - } + fun createPackageScope(part: JvmPackagePartProto): DeserializedPackageMemberScope { + val packageData = JvmProtoBufUtil.readPackageDataFrom(part.data, part.strings) + return DeserializedPackageMemberScope( + this, packageData.packageProto, packageData.nameResolver, deserializationComponents, { listOf() } + ) } } } diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/util.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/util.kt index e6ef6eefacb..706fabd4f2e 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/util.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/descriptors/util.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.load.java.descriptors -import com.google.protobuf.MessageLite import org.jetbrains.kotlin.descriptors.CallableDescriptor import org.jetbrains.kotlin.descriptors.ClassDescriptor import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor @@ -26,7 +25,6 @@ import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.resolve.descriptorUtil.getSuperClassNotAny import org.jetbrains.kotlin.resolve.descriptorUtil.module import org.jetbrains.kotlin.serialization.ProtoBuf -import org.jetbrains.kotlin.serialization.deserialization.NameResolver import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor import org.jetbrains.kotlin.serialization.jvm.JvmProtoBuf import org.jetbrains.kotlin.types.KotlinType @@ -69,21 +67,20 @@ fun ClassDescriptor.getParentJavaStaticClassScope(): LazyJavaStaticClassScope? { return staticScope } -fun DeserializedCallableMemberDescriptor.getImplClassNameForDeserialized(): Name? = - getImplClassNameForProto(this.proto, this.nameResolver) - -fun getImplClassNameForProto(proto: MessageLite, nameResolver: NameResolver): Name? = - when (proto) { - is ProtoBuf.Constructor -> - null - is ProtoBuf.Function -> - if (proto.hasExtension(JvmProtoBuf.methodImplClassName)) - proto.getExtension(JvmProtoBuf.methodImplClassName) - else null - is ProtoBuf.Property -> - if (proto.hasExtension(JvmProtoBuf.propertyImplClassName)) - proto.getExtension(JvmProtoBuf.propertyImplClassName) - else null - else -> - error("Unknown message: $proto") - }?.let { nameResolver.getName(it) } \ No newline at end of file +fun DeserializedCallableMemberDescriptor.getImplClassNameForDeserialized(): Name? { + val proto = proto + return when (proto) { + is ProtoBuf.Constructor -> + null + is ProtoBuf.Function -> + if (proto.hasExtension(JvmProtoBuf.methodImplClassName)) + proto.getExtension(JvmProtoBuf.methodImplClassName) + else null + is ProtoBuf.Property -> + if (proto.hasExtension(JvmProtoBuf.propertyImplClassName)) + proto.getExtension(JvmProtoBuf.propertyImplClassName) + else null + else -> + error("Unknown message: $proto") + }?.let { nameResolver.getName(it) } +} diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt index 5865363a36c..dd434829731 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/KotlinJvmBinaryPackageSourceElement.kt @@ -19,11 +19,9 @@ package org.jetbrains.kotlin.load.kotlin import org.jetbrains.kotlin.descriptors.SourceElement import org.jetbrains.kotlin.descriptors.SourceFile import org.jetbrains.kotlin.load.java.descriptors.getImplClassNameForDeserialized -import org.jetbrains.kotlin.load.java.descriptors.getImplClassNameForProto import org.jetbrains.kotlin.load.java.structure.JavaPackage import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedCallableMemberDescriptor - class KotlinJvmBinaryPackageSourceElement( private val jPackage: JavaPackage, kotlinBinaryClasses: List @@ -47,4 +45,4 @@ class KotlinJvmBinaryPackageSourceElement( val name = descriptor.getImplClassNameForDeserialized() ?: return null return implClassNameToBinaryClass[name.asString()] } -} \ No newline at end of file +} diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt index f5fd3e55af7..2975cd0e035 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/descriptors/DeserializedMemberScope.kt @@ -40,11 +40,11 @@ public abstract class DeserializedMemberScope protected constructor( private val functionProtos = c.storageManager.createLazyValue { - groupByKey(filteredFunctionProtos(functionList), { it.name }) { it.receiverType(c.typeTable) != null } + groupByKey(functionList, { it.name }) { it.receiverType(c.typeTable) != null } } private val propertyProtos = c.storageManager.createLazyValue { - groupByKey(filteredPropertyProtos(propertyList), { it.name }) { it.receiverType(c.typeTable) != null } + groupByKey(propertyList, { it.name }) { it.receiverType(c.typeTable) != null } } private val functions = @@ -52,10 +52,6 @@ public abstract class DeserializedMemberScope protected constructor( private val properties = c.storageManager.createMemoizedFunction> { computeProperties(it) } - protected open fun filteredFunctionProtos(protos: Collection): Collection = protos - - protected open fun filteredPropertyProtos(protos: Collection): Collection = protos - private fun groupByKey( protos: Collection, getNameIndex: (M) -> Int, isExtension: (M) -> Boolean ): Map> {