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 18f863e0037..6305ef027af 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 @@ -114,8 +114,11 @@ public class IncrementalPackageFragmentProvider( } private inner class IncrementalPackageScope(val packageData: PackageData) : DeserializedPackageMemberScope( - this@IncrementalPackageFragment, packageData, deserializationContext, { listOf() } - ) { + this@IncrementalPackageFragment, + packageData.getPackageProto(), + deserializationContext.withNameResolver(packageData.getNameResolver()), + { listOf() }) { + override fun filteredMemberProtos(allMemberProtos: Collection): Collection { return allMemberProtos .filter { 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 288c093afc8..cb80c0c45f3 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,7 +20,7 @@ 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.descriptors.DeserializedPackageMemberScope; +import org.jetbrains.jet.descriptors.serialization.descriptors.DescriptorsPackage; import org.jetbrains.jet.lang.descriptors.ClassDescriptor; import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; import org.jetbrains.jet.lang.resolve.java.resolver.ErrorReporter; @@ -64,7 +64,7 @@ public final class DeserializedDescriptorResolver { String[] data = readData(kotlinClass, PACKAGE_FACADE); if (data != null) { //all classes are included in java scope - return new DeserializedPackageMemberScope(descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context, + return DescriptorsPackage.DeserializedPackageMemberScope(descriptor, JavaProtoBufUtil.readPackageDataFrom(data), context, new Function0>() { @Override public Collection invoke() { diff --git a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.java b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.java deleted file mode 100644 index 2df552a6647..00000000000 --- a/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.java +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.descriptors.serialization.descriptors; - -import kotlin.Function0; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.descriptors.serialization.PackageData; -import org.jetbrains.jet.descriptors.serialization.ProtoBuf; -import org.jetbrains.jet.descriptors.serialization.context.ContextPackage; -import org.jetbrains.jet.descriptors.serialization.context.DeserializationContext; -import org.jetbrains.jet.descriptors.serialization.context.DeserializationGlobalContext; -import org.jetbrains.jet.lang.descriptors.ClassDescriptor; -import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; -import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor; -import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor; -import org.jetbrains.jet.lang.resolve.name.ClassId; -import org.jetbrains.jet.lang.resolve.name.FqName; -import org.jetbrains.jet.lang.resolve.name.Name; -import org.jetbrains.jet.storage.NotNullLazyValue; - -import java.util.Collection; - -public class DeserializedPackageMemberScope extends DeserializedMemberScope { - - private final FqName packageFqName; - private final DeserializationContext context; - private final NotNullLazyValue> classNames; - - public DeserializedPackageMemberScope( - @NotNull PackageFragmentDescriptor packageDescriptor, - @NotNull ProtoBuf.Package proto, - @NotNull DeserializationContext context, - @NotNull Function0> classNames - ) { - super(context.withTypes(packageDescriptor), proto.getMemberList()); - this.context = context; - this.packageFqName = packageDescriptor.getFqName(); - this.classNames = context.getStorageManager().createLazyValue(classNames); - } - - public DeserializedPackageMemberScope( - @NotNull PackageFragmentDescriptor packageDescriptor, - @NotNull PackageData packageData, - @NotNull DeserializationGlobalContext context, - @NotNull Function0> classNames - ) { - this(packageDescriptor, packageData.getPackageProto(), context.withNameResolver(packageData.getNameResolver()), classNames); - } - @Nullable - @Override - protected ClassDescriptor getClassDescriptor(@NotNull Name name) { - return ContextPackage.deserializeClass(context, new ClassId(packageFqName, name)); - } - - @Override - protected void addAllClassDescriptors(@NotNull Collection result) { - for (Name className : classNames.invoke()) { - ClassDescriptor classDescriptor = getClassDescriptor(className); - - if (classDescriptor != null) { - result.add(classDescriptor); - } - } - } - - @Override - protected void addNonDeclaredDescriptors(@NotNull Collection result) { - // Do nothing - } - - @Nullable - @Override - protected ReceiverParameterDescriptor getImplicitReceiver() { - return null; - } -} 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 new file mode 100644 index 00000000000..97b88a8bdf6 --- /dev/null +++ b/core/serialization/src/org/jetbrains/jet/descriptors/serialization/descriptors/DeserializedPackageMemberScope.kt @@ -0,0 +1,65 @@ +/* + * Copyright 2010-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +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.lang.descriptors.ClassDescriptor +import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor +import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor +import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor +import org.jetbrains.jet.lang.resolve.name.ClassId +import org.jetbrains.jet.lang.resolve.name.FqName +import org.jetbrains.jet.lang.resolve.name.Name +import org.jetbrains.jet.storage.NotNullLazyValue + + +public fun DeserializedPackageMemberScope(packageDescriptor: PackageFragmentDescriptor, + packageData: PackageData, + context: DeserializationGlobalContext, + classNames: () -> Collection): DeserializedPackageMemberScope + = DeserializedPackageMemberScope(packageDescriptor, packageData.getPackageProto(), context.withNameResolver(packageData.getNameResolver()), classNames) + +public open class DeserializedPackageMemberScope( + packageDescriptor: PackageFragmentDescriptor, + proto: ProtoBuf.Package, + private val context: DeserializationContext, + classNames: () -> Collection) +: DeserializedMemberScope(context.withTypes(packageDescriptor), proto.getMemberList()) { + + private val packageFqName = packageDescriptor.fqName + private val classNames = context.storageManager.createLazyValue>(classNames) + + override fun getClassDescriptor(name: Name) = context.deserializeClass(ClassId(packageFqName, name)) + + override fun addAllClassDescriptors(result: MutableCollection) { + for (className in classNames.invoke()) { + val classDescriptor = getClassDescriptor(className) + + if (classDescriptor != null) { + result.add(classDescriptor) + } + } + } + + override fun addNonDeclaredDescriptors(result: MutableCollection) { + // Do nothing + } + + override fun getImplicitReceiver(): ReceiverParameterDescriptor? = null +}