From 7c61539516cda0dd458bf316d41882c85494c0c4 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 12 Aug 2014 20:19:03 +0400 Subject: [PATCH] Faster code for auto-import fix --- .../jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt | 8 ++++++-- .../org/jetbrains/jet/plugin/quickfix/AutoImportFix.java | 7 +------ 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt index 2d4a5fb6451..a422408968d 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt +++ b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt @@ -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 { 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()).filter { it.getReceiverParameter() == null } } + + public fun getClassDescriptorsByName(name: String, analyzer: KotlinCodeAnalyzer, scope: GlobalSearchScope): Collection { + return JetShortNamesCache.getKotlinInstance(project).getClassesByName(name, scope).flatMap { ResolveSessionUtils.getClassDescriptorsByFqName(analyzer, FqName(it.getQualifiedName()!!)) } + } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java index 1ce41bcad4d..92e641dbec8 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/AutoImportFix.java @@ -221,12 +221,7 @@ public class AutoImportFix extends JetHintAction implem } private static Collection getJetClasses(@NotNull final String typeName, @NotNull GlobalSearchScope searchScope, @NotNull Project project, @NotNull KotlinCodeAnalyzer resolveSession) { - Collection descriptors = new KotlinIndicesHelper(project).getClassDescriptors(new Function1() { - @Override - public Boolean invoke(String s) { - return typeName.equals(s); - } - }, resolveSession, searchScope); + Collection descriptors = new KotlinIndicesHelper(project).getClassDescriptorsByName(typeName, resolveSession, searchScope); return Collections2.transform(descriptors, new Function() { @Override