From 8d02c58e0a476f2940827d0d8a6ea9aa61ee29a3 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Sat, 1 Nov 2014 12:32:06 +0300 Subject: [PATCH] Added name filter to PackageFragmentProvider.getSubPackagesOf but do not know how to use it actually --- .../incremental/IncrementalPackageFragmentProvider.kt | 3 ++- .../jet/lang/resolve/MutablePackageFragmentProvider.kt | 3 ++- .../jetbrains/jet/lang/resolve/lazy/ResolveSession.java | 5 +++-- .../jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java | 3 ++- .../resolve/java/lazy/LazyJavaPackageFragmentProvider.kt | 3 ++- .../jet/lang/descriptors/PackageFragmentProvider.kt | 4 ++-- .../descriptors/impl/CompositePackageFragmentProvider.kt | 7 +++---- .../jet/lang/descriptors/impl/SubpackagesScope.kt | 2 +- .../jet/lang/types/lang/BuiltinsPackageFragment.kt | 2 +- .../decompiler/textBuilder/DeserializerForDecompiler.kt | 2 +- .../plugin/decompiler/textBuilder/missingDependencies.kt | 2 +- 11 files changed, 20 insertions(+), 16 deletions(-) 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 b94b64d7d32..802a08ce09a 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 @@ -38,6 +38,7 @@ import org.jetbrains.jet.lang.resolve.java.JvmClassName import org.jetbrains.jet.descriptors.serialization.PackageData import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava import org.jetbrains.jet.lang.resolve.kotlin.incremental.cache.IncrementalCache +import org.jetbrains.jet.lang.resolve.name.Name public class IncrementalPackageFragmentProvider( sourceFiles: Collection, @@ -81,7 +82,7 @@ public class IncrementalPackageFragmentProvider( fqNamesToLoad.forEach { createPackageFragment(it) } } - override fun getSubPackagesOf(fqName: FqName): Collection { + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { return fqNameToSubFqNames[fqName].orEmpty() } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.kt index f32fb70a30e..472ea3c9b5b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/MutablePackageFragmentProvider.kt @@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider import org.jetbrains.jet.lang.descriptors.impl.MutablePackageFragmentDescriptor import org.jetbrains.jet.lang.resolve.name.FqName import java.util.HashMap +import org.jetbrains.jet.lang.resolve.name.Name public class MutablePackageFragmentProvider(public val module: ModuleDescriptor) : PackageFragmentProvider { @@ -37,7 +38,7 @@ public class MutablePackageFragmentProvider(public val module: ModuleDescriptor) override fun getPackageFragments(fqName: FqName) = ContainerUtil.createMaybeSingletonList(fqNameToPackage.get(fqName)) - override fun getSubPackagesOf(fqName: FqName) = subPackages[fqName] + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = subPackages[fqName] public fun getOrCreateFragment(fqName: FqName): MutablePackageFragmentDescriptor { if (!fqNameToPackage.containsKey(fqName)) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java index 9ac556522a4..064c022ba48 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ResolveSession.java @@ -143,7 +143,8 @@ public class ResolveSession implements KotlinCodeAnalyzer { @NotNull @Override - public Collection getSubPackagesOf(@NotNull FqName fqName) { + public Collection getSubPackagesOf( + @NotNull FqName fqName, @NotNull Function1 nameFilter) { LazyPackageDescriptor packageDescriptor = getPackageFragment(fqName); if (packageDescriptor == null) { return Collections.emptyList(); @@ -457,7 +458,7 @@ public class ResolveSession implements KotlinCodeAnalyzer { @NotNull LazyPackageDescriptor current ) { result.add(current); - for (FqName subPackage : packageFragmentProvider.getSubPackagesOf(current.getFqName())) { + for (FqName subPackage : packageFragmentProvider.getSubPackagesOf(current.getFqName(), JetScope.ALL_NAME_FILTER)) { LazyPackageDescriptor fragment = getPackageFragment(subPackage); assert fragment != null : "Couldn't find fragment for " + subPackage; collectAllPackages(result, fragment); diff --git a/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java b/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java index f2ac05fc5a7..d338be94b51 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java @@ -211,7 +211,8 @@ public abstract class AbstractJetDiagnosticsTest extends BaseDiagnosticsTest { @NotNull @Override - public Collection getSubPackagesOf(@NotNull FqName fqName) { + public Collection getSubPackagesOf( + @NotNull FqName fqName, @NotNull Function1 nameFilter) { return Collections.emptyList(); } }); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt index 8b83aca0bf5..8f961d2141f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaPackageFragmentProvider.kt @@ -24,6 +24,7 @@ import org.jetbrains.jet.lang.descriptors.ClassDescriptor import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.* import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider +import org.jetbrains.jet.lang.resolve.name.Name public class LazyJavaPackageFragmentProvider( outerContext: GlobalJavaResolverContext, @@ -78,7 +79,7 @@ public class LazyJavaPackageFragmentProvider( override fun getPackageFragments(fqName: FqName) = getPackageFragment(fqName)?.let {listOf(it)}.orEmpty() - override fun getSubPackagesOf(fqName: FqName) = getPackageFragment(fqName)?.getMemberScope()?.getSubPackages().orEmpty() + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean) = getPackageFragment(fqName)?.getMemberScope()?.getSubPackages().orEmpty() fun resolveKotlinBinaryClass(kotlinClass: KotlinJvmBinaryClass) = c.deserializedDescriptorResolver.resolveClass(kotlinClass) diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentProvider.kt b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentProvider.kt index c660cce4235..99e362b154b 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentProvider.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/PackageFragmentProvider.kt @@ -16,8 +16,8 @@ package org.jetbrains.jet.lang.descriptors -import org.jetbrains.annotations.ReadOnly import org.jetbrains.jet.lang.resolve.name.FqName +import org.jetbrains.jet.lang.resolve.name.Name public trait PackageFragmentProvider { public fun getPackageFragments(fqName: FqName): List @@ -25,5 +25,5 @@ public trait PackageFragmentProvider { /** * @return declared subpackages of {@code fqName} */ - public fun getSubPackagesOf(fqName: FqName): Collection + public fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.kt b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.kt index a56ef625da7..760d2874ee7 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/CompositePackageFragmentProvider.kt @@ -21,8 +21,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider import org.jetbrains.jet.lang.resolve.name.FqName import java.util.* -import kotlin.List -import kotlin.Collection +import org.jetbrains.jet.lang.resolve.name.Name public class CompositePackageFragmentProvider(// can be modified from outside private val providers: List) : PackageFragmentProvider { @@ -36,10 +35,10 @@ public class CompositePackageFragmentProvider(// can be modified from outside return result } - override fun getSubPackagesOf(fqName: FqName): Collection { + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { val result = HashSet() for (provider in providers) { - result.addAll(provider.getSubPackagesOf(fqName)) + result.addAll(provider.getSubPackagesOf(fqName, nameFilter)) } return result } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt index b6388096654..0f844752512 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/SubpackagesScope.kt @@ -37,7 +37,7 @@ public class SubpackagesScope(private val containingDeclaration: PackageViewDesc override fun getDescriptors(kindFilter: (JetScope.DescriptorKind) -> Boolean, nameFilter: (Name) -> Boolean): Collection { - val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName()) + val subFqNames = containingDeclaration.getModule().getPackageFragmentProvider().getSubPackagesOf(containingDeclaration.getFqName(), nameFilter) val result = ArrayList(subFqNames.size()) for (subFqName in subFqNames) { result.addIfNotNull(getPackage(subFqName.shortName())) 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 f7a52c94635..898db253fbc 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 @@ -95,7 +95,7 @@ class BuiltinsPackageFragment(storageManager: StorageManager, module: ModuleDesc override fun getPackageFragments(fqName: FqName): List = if (KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME == fqName) listOf(this@BuiltinsPackageFragment) else listOf() - override fun getSubPackagesOf(fqName: FqName): Collection + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection = if (fqName.isRoot()) setOf(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME) else listOf() } 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 4b61977d861..930b7303879 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 @@ -127,7 +127,7 @@ public class DeserializerForDecompiler(val packageDirectory: VirtualFile, val di return listOf(createDummyPackageFragment(fqName)) } - override fun getSubPackagesOf(fqName: FqName): Collection { + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { throw UnsupportedOperationException("This method is not supposed to be called.") } } diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/missingDependencies.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/missingDependencies.kt index 9c04732e0a2..281041f9a76 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/missingDependencies.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/decompiler/textBuilder/missingDependencies.kt @@ -56,7 +56,7 @@ private class PackageFragmentProviderForMissingDependencies(val moduleDescriptor override fun getPackageFragments(fqName: FqName): List { return listOf(PackageFragmentWithMissingDependencies(fqName, moduleDescriptor)) } - override fun getSubPackagesOf(fqName: FqName): Collection { + override fun getSubPackagesOf(fqName: FqName, nameFilter: (Name) -> Boolean): Collection { throw UnsupportedOperationException("This method is not supposed to be called.") } }