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>()