Implement SubpackagesIndexService#hasSubPackages()
Use it in PackageIndexUtil#packageExists()
This commit is contained in:
@@ -52,7 +52,8 @@ public final class PackageIndexUtil {
|
|||||||
@NotNull GlobalSearchScope searchScope,
|
@NotNull GlobalSearchScope searchScope,
|
||||||
@NotNull Project project
|
@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(
|
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> {
|
public fun getSubpackages(fqName: FqName, scope: GlobalSearchScope): Collection<FqName> {
|
||||||
val possibleFilesFqNames = fqNameByPrefix[fqName]
|
val possibleFilesFqNames = fqNameByPrefix[fqName]
|
||||||
val existingSubPackagesShortNames = HashSet<Name>()
|
val existingSubPackagesShortNames = HashSet<Name>()
|
||||||
|
|||||||
@@ -20,18 +20,22 @@ import com.intellij.openapi.project.Project;
|
|||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.plugin.stubindex.JetExactPackagesIndex;
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetAllPackagesIndex;
|
|
||||||
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope;
|
import org.jetbrains.jet.plugin.stubindex.JetSourceFilterScope;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
public class PluginJetFilesProvider {
|
public class PluginJetFilesProvider {
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static Collection<JetFile> allFilesInProject(@NotNull Project project) {
|
public static Collection<JetFile> allFilesInProject(@NotNull Project project) {
|
||||||
return JetAllPackagesIndex.getInstance().get(FqName.ROOT.asString(), project,
|
Collection<JetFile> result = new ArrayList<JetFile>();
|
||||||
JetSourceFilterScope.kotlinSources(GlobalSearchScope.allScope(project), project));
|
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() {
|
private PluginJetFilesProvider() {
|
||||||
|
|||||||
Reference in New Issue
Block a user