Completion optimization to not search classes across all modules for each modules

This commit is contained in:
valentin
2014-11-06 19:25:08 +03:00
committed by Valentin Kipyatkov
parent 4ca6c611f8
commit 6729a72ef8
3 changed files with 14 additions and 14 deletions
@@ -96,6 +96,6 @@ public class JavaClassFinderImpl implements JavaClassFinder {
@Override
public JavaPackage findPackage(@NotNull FqName fqName) {
PsiPackage psiPackage = javaFacade.findPackage(fqName.asString());
return psiPackage == null ? null : new JavaPackageImpl(psiPackage);
return psiPackage == null ? null : new JavaPackageImpl(psiPackage, javaSearchScope);
}
}
@@ -17,6 +17,7 @@
package org.jetbrains.jet.lang.resolve.java.structure.impl;
import com.intellij.psi.*;
import com.intellij.psi.search.GlobalSearchScope;
import kotlin.Function1;
import kotlin.KotlinPackage;
import org.jetbrains.annotations.NotNull;
@@ -46,14 +47,6 @@ public class JavaElementCollectionFromPsiArrayUtil {
}
};
private static final Factory<PsiPackage, JavaPackage> PACKAGES = new Factory<PsiPackage, JavaPackage>() {
@NotNull
@Override
public JavaPackage create(@NotNull PsiPackage psiPackage) {
return new JavaPackageImpl(psiPackage);
}
};
private static final Factory<PsiMethod, JavaMethod> METHODS = new Factory<PsiMethod, JavaMethod>() {
@NotNull
@Override
@@ -164,8 +157,14 @@ public class JavaElementCollectionFromPsiArrayUtil {
}
@NotNull
public static Collection<JavaPackage> packages(@NotNull PsiPackage[] packages) {
return convert(packages, Factories.PACKAGES);
public static Collection<JavaPackage> packages(@NotNull PsiPackage[] packages, @NotNull final GlobalSearchScope scope) {
return convert(packages, new Factory<PsiPackage, JavaPackage>() {
@NotNull
@Override
public JavaPackage create(@NotNull PsiPackage aPackage) {
return new JavaPackageImpl(aPackage, scope);
}
});
}
@NotNull
@@ -24,18 +24,19 @@ import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaElementCollectionF
import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaElementCollectionFromPsiArrayUtil.packages
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
import org.jetbrains.jet.lang.resolve.name.Name
import com.intellij.psi.search.GlobalSearchScope
public class JavaPackageImpl(psiPackage: PsiPackage) : JavaElementImpl<PsiPackage>(psiPackage), JavaPackage {
public class JavaPackageImpl(psiPackage: PsiPackage, private val scope: GlobalSearchScope) : JavaElementImpl<PsiPackage>(psiPackage), JavaPackage {
override fun getClasses(nameFilter: (Name) -> Boolean): MutableCollection<JavaClass> {
val psiClasses = getPsi().getClasses().filter {
val psiClasses = getPsi().getClasses(scope).filter {
val name = it.getName()
name != null && nameFilter(Name.identifier(name))
}
return classes(psiClasses)
}
override fun getSubPackages() = packages(getPsi().getSubPackages())
override fun getSubPackages() = packages(getPsi().getSubPackages(scope), scope)
override fun getFqName() = FqName(getPsi().getQualifiedName())
}