From 5acd23e880a451609007e1660cb409afa093d76f Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 20 Aug 2014 17:34:16 +0400 Subject: [PATCH] Implement SubpackagesIndexService#hasSubPackages() Use it in PackageIndexUtil#packageExists() --- .../jet/plugin/stubindex/PackageIndexUtil.java | 3 ++- .../jet/plugin/stubindex/SubpackagesIndexService.kt | 6 ++++++ .../jet/plugin/project/PluginJetFilesProvider.java | 12 ++++++++---- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java index d8bc49109d4..21ad2e51ae5 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/PackageIndexUtil.java @@ -52,7 +52,8 @@ public final class PackageIndexUtil { @NotNull GlobalSearchScope searchScope, @NotNull Project project ) { - return containsAny(packageFqName, searchScope, project, JetAllPackagesIndex.getInstance().getKey()); + return containsAny(packageFqName, searchScope, project, JetExactPackagesIndex.getInstance().getKey()) + || SubpackagesIndexService.OBJECT$.getInstance(project).hasSubpackages(packageFqName, searchScope); } public static boolean containsAny( diff --git a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/SubpackagesIndexService.kt b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/SubpackagesIndexService.kt index d7670858990..2ee3ca38ed1 100644 --- a/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/SubpackagesIndexService.kt +++ b/idea/idea-analysis/src/org/jetbrains/jet/plugin/stubindex/SubpackagesIndexService.kt @@ -53,6 +53,12 @@ public class SubpackagesIndexService(private val project: Project) { } } + public fun hasSubpackages(fqName: FqName, scope: GlobalSearchScope): Boolean { + return fqNameByPrefix[fqName].any { packageWithFilesFqName -> + PackageIndexUtil.containsAny(packageWithFilesFqName, scope, project, JetExactPackagesIndex.getInstance().getKey()) + } + } + public fun getSubpackages(fqName: FqName, scope: GlobalSearchScope): Collection { val possibleFilesFqNames = fqNameByPrefix[fqName] val existingSubPackagesShortNames = HashSet() diff --git a/idea/src/org/jetbrains/jet/plugin/project/PluginJetFilesProvider.java b/idea/src/org/jetbrains/jet/plugin/project/PluginJetFilesProvider.java index 5f5b2a1e7b2..ea63c6435ec 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/PluginJetFilesProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/project/PluginJetFilesProvider.java @@ -20,18 +20,22 @@ import com.intellij.openapi.project.Project; import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.resolve.name.FqName; -import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex; +import org.jetbrains.jet.plugin.stubindex.JetExactPackagesIndex; import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope; +import java.util.ArrayList; import java.util.Collection; public class PluginJetFilesProvider { @NotNull public static Collection allFilesInProject(@NotNull Project project) { - return JetAllPackagesIndex.getInstance().get(FqName.ROOT.asString(), project, - JetSourceFilterScope.kotlinSources(GlobalSearchScope.allScope(project), project)); + Collection result = new ArrayList(); + GlobalSearchScope scope = JetSourceFilterScope.kotlinSources(GlobalSearchScope.allScope(project), project); + for (String packageWithFiles : JetExactPackagesIndex.getInstance().getAllKeys(project)) { + result.addAll(JetExactPackagesIndex.getInstance().get(packageWithFiles, project, scope)); + } + return result; } private PluginJetFilesProvider() {