Drop secondary DeserializedPackageMemberScope constructor
Create package context only once
This commit is contained in:
+1
-3
@@ -109,9 +109,7 @@ public class IncrementalPackageFragmentProvider(
|
||||
override fun getMemberScope(): JetScope = memberScope()
|
||||
|
||||
private inner class IncrementalPackageScope(val packageData: PackageData) : DeserializedPackageMemberScope(
|
||||
this@IncrementalPackageFragment,
|
||||
packageData.getPackageProto(),
|
||||
deserializationComponents.createContext(this@IncrementalPackageFragment, packageData.getNameResolver()),
|
||||
this@IncrementalPackageFragment, packageData.getPackageProto(), packageData.getNameResolver(), deserializationComponents,
|
||||
{ listOf() }
|
||||
) {
|
||||
override fun filteredMemberProtos(allMemberProtos: Collection<ProtoBuf.Callable>): Collection<ProtoBuf.Callable> {
|
||||
|
||||
+7
-4
@@ -20,8 +20,9 @@ import kotlin.Function0;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.descriptors.serialization.JavaProtoBufUtil;
|
||||
import org.jetbrains.jet.descriptors.serialization.PackageData;
|
||||
import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DescriptorsPackage;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPackageMemberScope;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor;
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter;
|
||||
@@ -65,14 +66,16 @@ public final class DeserializedDescriptorResolver {
|
||||
String[] data = readData(kotlinClass, PACKAGE_FACADE);
|
||||
if (data != null) {
|
||||
//all classes are included in java scope
|
||||
return DescriptorsPackage.DeserializedPackageMemberScope(
|
||||
descriptor, JavaProtoBufUtil.readPackageDataFrom(data), components,
|
||||
PackageData packageData = JavaProtoBufUtil.readPackageDataFrom(data);
|
||||
return new DeserializedPackageMemberScope(
|
||||
descriptor, packageData.getPackageProto(), packageData.getNameResolver(), components,
|
||||
new Function0<Collection<Name>>() {
|
||||
@Override
|
||||
public Collection<Name> invoke() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -45,10 +45,11 @@ class BuiltinsPackageFragment(storageManager: StorageManager, module: ModuleDesc
|
||||
DeserializedPackageMemberScope(
|
||||
this,
|
||||
loadPackage(),
|
||||
nameResolver,
|
||||
DeserializationComponents(
|
||||
storageManager, module, BuiltInsClassDataFinder(), AnnotationLoader.UNSUPPORTED, // TODO: support annotations
|
||||
ConstantLoader.UNSUPPORTED, provider, FlexibleTypeCapabilitiesDeserializer.ThrowException
|
||||
).createContext(this, nameResolver),
|
||||
),
|
||||
{ readClassNames() }
|
||||
)
|
||||
|
||||
|
||||
+5
-16
@@ -16,9 +16,8 @@
|
||||
|
||||
package org.jetbrains.jet.descriptors.serialization.descriptors
|
||||
|
||||
import org.jetbrains.jet.descriptors.serialization.PackageData
|
||||
import org.jetbrains.jet.descriptors.serialization.ProtoBuf
|
||||
import org.jetbrains.jet.descriptors.serialization.context.*
|
||||
import org.jetbrains.jet.descriptors.serialization.context.DeserializationComponents
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor
|
||||
import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor
|
||||
@@ -26,25 +25,15 @@ import org.jetbrains.jet.lang.resolve.name.ClassId
|
||||
import org.jetbrains.jet.lang.resolve.name.Name
|
||||
import org.jetbrains.jet.utils.addIfNotNull
|
||||
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
|
||||
|
||||
public fun DeserializedPackageMemberScope(
|
||||
packageDescriptor: PackageFragmentDescriptor,
|
||||
packageData: PackageData,
|
||||
components: DeserializationComponents,
|
||||
classNames: () -> Collection<Name>
|
||||
): DeserializedPackageMemberScope = DeserializedPackageMemberScope(
|
||||
packageDescriptor,
|
||||
packageData.getPackageProto(),
|
||||
components.createContext(packageDescriptor, packageData.getNameResolver()),
|
||||
classNames
|
||||
)
|
||||
import org.jetbrains.jet.descriptors.serialization.NameResolver
|
||||
|
||||
public open class DeserializedPackageMemberScope(
|
||||
packageDescriptor: PackageFragmentDescriptor,
|
||||
proto: ProtoBuf.Package,
|
||||
outerContext: DeserializationContext,
|
||||
nameResolver: NameResolver,
|
||||
components: DeserializationComponents,
|
||||
classNames: () -> Collection<Name>
|
||||
) : DeserializedMemberScope(outerContext.childContext(packageDescriptor, listOf()), proto.getMemberList()) {
|
||||
) : DeserializedMemberScope(components.createContext(packageDescriptor, nameResolver), proto.getMemberList()) {
|
||||
|
||||
private val packageFqName = packageDescriptor.fqName
|
||||
private val classNames = context.components.storageManager.createLazyValue(classNames)
|
||||
|
||||
+3
-1
@@ -63,9 +63,11 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di
|
||||
LOG.error("Could not read annotation data for $packageFqName from ${binaryClassForPackageClass?.getClassId()}")
|
||||
return Collections.emptyList()
|
||||
}
|
||||
val packageData = JavaProtoBufUtil.readPackageDataFrom(annotationData)
|
||||
val membersScope = DeserializedPackageMemberScope(
|
||||
createDummyPackageFragment(packageFqName),
|
||||
JavaProtoBufUtil.readPackageDataFrom(annotationData),
|
||||
packageData.getPackageProto(),
|
||||
packageData.getNameResolver(),
|
||||
deserializationComponents
|
||||
) { listOf() }
|
||||
return membersScope.getDescriptors()
|
||||
|
||||
Reference in New Issue
Block a user