Renamed class + inherited NoSubpackagesInPackageScope from adapter class to get printScopeStructure implementation

This commit is contained in:
Valentin Kipyatkov
2014-12-26 14:40:39 +03:00
parent a383a82ddd
commit b61b45f794
3 changed files with 9 additions and 8 deletions
@@ -86,7 +86,7 @@ public interface Importer {
protected void importAllUnderDeclaration(@NotNull DeclarationDescriptor descriptor, @NotNull PlatformToKotlinClassMap platformToKotlinClassMap) {
List<JetScope> scopesToImport = new ArrayList<JetScope>(3);
if (descriptor instanceof PackageViewDescriptor) {
scopesToImport.add(new ClassesInPackageScope((PackageViewDescriptor) descriptor));
scopesToImport.add(new NoSubpackagesInPackageScope((PackageViewDescriptor) descriptor));
}
else if (descriptor instanceof ClassDescriptor && ((ClassDescriptor) descriptor).getKind() != ClassKind.OBJECT) {
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
@@ -16,24 +16,25 @@
package org.jetbrains.jet.lang.resolve
import org.jetbrains.jet.lang.resolve.scopes.JetScope
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor
import org.jetbrains.jet.lang.resolve.name.Name
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor
import org.jetbrains.jet.lang.resolve.scopes.DescriptorKindFilter
import org.jetbrains.jet.lang.resolve.scopes.AbstractScopeAdapter
import org.jetbrains.jet.lang.resolve.scopes.JetScope
class ClassesInPackageScope(packageDescriptor: PackageViewDescriptor) : JetScope by packageDescriptor.getMemberScope() {
private val memberScope = packageDescriptor.getMemberScope()
class NoSubpackagesInPackageScope(packageDescriptor: PackageViewDescriptor) : AbstractScopeAdapter() {
override val workerScope: JetScope = packageDescriptor.getMemberScope()
override fun getPackage(name: Name): PackageViewDescriptor? = null
override fun getDescriptors(kindFilter: DescriptorKindFilter, nameFilter: (Name) -> Boolean): Collection<DeclarationDescriptor> {
val modifiedFilter = kindFilter.withoutKinds(DescriptorKindFilter.PACKAGES_MASK)
if (modifiedFilter.kindMask == 0) return listOf()
return memberScope.getDescriptors(modifiedFilter, nameFilter).filter { it !is PackageViewDescriptor }
return workerScope.getDescriptors(modifiedFilter, nameFilter).filter { it !is PackageViewDescriptor }
}
override fun getOwnDeclaredDescriptors(): Collection<DeclarationDescriptor> {
return memberScope.getOwnDeclaredDescriptors().filter { it !is PackageViewDescriptor }
return workerScope.getOwnDeclaredDescriptors().filter { it !is PackageViewDescriptor }
}
}
@@ -23,7 +23,7 @@ import kotlin.Function1;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.PackageViewDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.ClassesInPackageScope;
import org.jetbrains.jet.lang.resolve.NoSubpackagesInPackageScope;
import org.jetbrains.jet.lang.resolve.ImportPath;
import org.jetbrains.jet.lang.resolve.JetModuleUtil;
import org.jetbrains.jet.lang.resolve.TemporaryBindingTrace;
@@ -98,7 +98,7 @@ public class ScopeProvider {
public JetScope[] collectFileScopes(@NotNull JetFile file) {
List<JetScope> list = new ArrayList<JetScope>();
list.add(new ClassesInPackageScope(getFilePackageDescriptor(file)));
list.add(new NoSubpackagesInPackageScope(getFilePackageDescriptor(file)));
list.add(JetModuleUtil.getSubpackagesOfRootScope(resolveSession.getModuleDescriptor()));
list.add(explicitImportScopes.invoke(file));
list.addAll(additionalFileScopeProvider.scopes(file));