Extract containsAny utility

This commit is contained in:
Pavel V. Talanov
2014-08-20 17:21:11 +04:00
parent 8cfcf4d930
commit faf303693e
2 changed files with 14 additions and 3 deletions
@@ -20,6 +20,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Ref;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.stubs.StubIndex;
import com.intellij.psi.stubs.StubIndexKey;
import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetFile;
@@ -50,10 +51,19 @@ public final class PackageIndexUtil {
@NotNull FqName packageFqName,
@NotNull GlobalSearchScope searchScope,
@NotNull Project project
) {
return containsAny(packageFqName, searchScope, project, JetAllPackagesIndex.getInstance().getKey());
}
public static boolean containsAny(
@NotNull FqName packageFqName,
@NotNull GlobalSearchScope searchScope,
@NotNull Project project,
@NotNull StubIndexKey<String, JetFile> key
) {
final Ref<Boolean> result = new Ref<Boolean>(false);
StubIndex.getInstance().processElements(
JetAllPackagesIndex.getInstance().getKey(), packageFqName.asString(), project, searchScope, JetFile.class,
key, packageFqName.asString(), project, searchScope, JetFile.class,
new Processor<JetFile>() {
@Override
public boolean process(JetFile file) {
@@ -62,8 +62,9 @@ public class SubpackagesIndexService(private val project: Project) {
if (candidateSubPackageShortName in existingSubPackagesShortNames) {
continue
}
//TODO: better check
val existsInThisScope = !JetExactPackagesIndex.getInstance().get(filesFqName.asString(), project, scope).isEmpty()
val existsInThisScope = PackageIndexUtil.containsAny(
filesFqName, scope, project, JetExactPackagesIndex.getInstance().getKey()
)
if (existsInThisScope) {
existingSubPackagesShortNames.add(candidateSubPackageShortName)
}