Implement SubpackagesIndexService#hasSubPackages()

Use it in PackageIndexUtil#packageExists()
This commit is contained in:
Pavel V. Talanov
2014-08-20 17:34:16 +04:00
parent faf303693e
commit 5acd23e880
3 changed files with 16 additions and 5 deletions
@@ -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(
@@ -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<FqName> {
val possibleFilesFqNames = fqNameByPrefix[fqName]
val existingSubPackagesShortNames = HashSet<Name>()
@@ -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<JetFile> allFilesInProject(@NotNull Project project) {
return JetAllPackagesIndex.getInstance().get(FqName.ROOT.asString(), project,
JetSourceFilterScope.kotlinSources(GlobalSearchScope.allScope(project), project));
Collection<JetFile> result = new ArrayList<JetFile>();
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() {