diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/incremental/IncrementalPackageFragmentProvider.kt b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/incremental/IncrementalPackageFragmentProvider.kt index b485b55c66e..9e88665df76 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/incremental/IncrementalPackageFragmentProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/incremental/IncrementalPackageFragmentProvider.kt @@ -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): Collection { diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java index bd5c3027eb5..44ce89a41dc 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/kotlin/DeserializedDescriptorResolver.java @@ -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>() { @Override public Collection invoke() { return Collections.emptyList(); } - }); + } + ); } return null; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.kt b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.kt index b46a9e7bc32..0abd1dd3e2c 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/BuiltinsPackageFragment.kt @@ -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() } ) diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.kt b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.kt index ab66de9799e..af1dd4b3886 100644 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.kt +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.kt @@ -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 -): 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 -) : 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) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DeserializerForDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DeserializerForDecompiler.kt index 14b386026fc..c8188c21d52 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DeserializerForDecompiler.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/DeserializerForDecompiler.kt @@ -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()