Faster code for auto-import fix

This commit is contained in:
Valentin Kipyatkov
2014-08-12 20:19:03 +04:00
parent ba91bc36aa
commit 7c61539516
2 changed files with 7 additions and 8 deletions
@@ -49,7 +49,7 @@ import com.intellij.openapi.project.Project
public class KotlinIndicesHelper(private val project: Project) {
public fun getTopLevelObjects(nameFilter: (String) -> Boolean, resolveSession: ResolveSessionForBodies, scope: GlobalSearchScope): Collection<ClassDescriptor> {
val allObjectNames = JetTopLevelObjectShortNameIndex.getInstance().getAllKeys(project).stream() +
JetFromJavaDescriptorHelper.getPossiblePackageDeclarationsNames(project, GlobalSearchScope.allScope(project)).stream()
JetFromJavaDescriptorHelper.getPossiblePackageDeclarationsNames(project, scope).stream()
return allObjectNames
.filter(nameFilter)
.toSet()
@@ -65,7 +65,7 @@ public class KotlinIndicesHelper(private val project: Project) {
result.addAll(ResolveSessionUtils.getClassOrObjectDescriptorsByFqName(resolveSession, fqName, ResolveSessionUtils.SINGLETON_FILTER))
}
for (psiClass in JetFromJavaDescriptorHelper.getCompiledClassesForTopLevelObjects(project, GlobalSearchScope.allScope(project))) {
for (psiClass in JetFromJavaDescriptorHelper.getCompiledClassesForTopLevelObjects(project, scope)) {
val qualifiedName = psiClass.getQualifiedName()
if (qualifiedName != null) {
result.addAll(ResolveSessionUtils.getClassOrObjectDescriptorsByFqName(resolveSession, FqName(qualifiedName), ResolveSessionUtils.SINGLETON_FILTER))
@@ -171,4 +171,8 @@ public class KotlinIndicesHelper(private val project: Project) {
val allDescriptors = QualifiedExpressionResolver().analyseImportReference(importDirective, jetScope, BindingTraceContext(), resolveSession.getModuleDescriptor())
return allDescriptors.filterIsInstance(javaClass<CallableDescriptor>()).filter { it.getReceiverParameter() == null }
}
public fun getClassDescriptorsByName(name: String, analyzer: KotlinCodeAnalyzer, scope: GlobalSearchScope): Collection<ClassDescriptor> {
return JetShortNamesCache.getKotlinInstance(project).getClassesByName(name, scope).flatMap { ResolveSessionUtils.getClassDescriptorsByFqName(analyzer, FqName(it.getQualifiedName()!!)) }
}
}
@@ -221,12 +221,7 @@ public class AutoImportFix extends JetHintAction<JetSimpleNameExpression> implem
}
private static Collection<FqName> getJetClasses(@NotNull final String typeName, @NotNull GlobalSearchScope searchScope, @NotNull Project project, @NotNull KotlinCodeAnalyzer resolveSession) {
Collection<ClassDescriptor> descriptors = new KotlinIndicesHelper(project).getClassDescriptors(new Function1<String, Boolean>() {
@Override
public Boolean invoke(String s) {
return typeName.equals(s);
}
}, resolveSession, searchScope);
Collection<ClassDescriptor> descriptors = new KotlinIndicesHelper(project).getClassDescriptorsByName(typeName, resolveSession, searchScope);
return Collections2.transform(descriptors, new Function<ClassDescriptor, FqName>() {
@Override