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