From 04bf0059ecd37c72370efa1618022cffb2bad73f Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 12 Aug 2014 19:38:47 +0400 Subject: [PATCH] Code refactoring --- .../jet/plugin/caches/JetShortNamesCache.kt | 21 +++++++------------ .../plugin/completion/CompletionSession.kt | 10 +++------ 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.kt b/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.kt index a0019c97c24..b942a0c9c7d 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.kt +++ b/idea/src/org/jetbrains/jet/plugin/caches/JetShortNamesCache.kt @@ -122,21 +122,16 @@ public class JetShortNamesCache(private val project: Project) : PsiShortNamesCac destination.addAll(Arrays.asList(*getAllClassNames())) } - /** - * Get kotlin non-extension top-level function names. Method is allowed to give invalid names - all result should be - * checked with getTopLevelFunctionDescriptorsByName(). - */ - public fun getAllTopLevelFunctionNames(): Collection { - return (JetTopLevelNonExtensionFunctionShortNameIndex.getInstance().getAllKeys(project) - + JetFromJavaDescriptorHelper.getPossiblePackageDeclarationsNames(project, GlobalSearchScope.allScope(project))).toSet() + 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() + return allObjectNames + .filter(nameFilter) + .toSet() + .flatMap { getTopLevelObjectsByName(it, resolveSession, scope) } } - public fun getAllTopLevelObjectNames(): Collection { - return (JetTopLevelObjectShortNameIndex.getInstance().getAllKeys(project) - + JetFromJavaDescriptorHelper.getCompiledClassesForTopLevelObjects(project, GlobalSearchScope.allScope(project)).map { it.getName()!! }).toSet() - } - - public fun getTopLevelObjectsByName(name: String, resolveSession: ResolveSessionForBodies, scope: GlobalSearchScope): Collection { + private fun getTopLevelObjectsByName(name: String, resolveSession: ResolveSessionForBodies, scope: GlobalSearchScope): Collection { val result = hashSetOf() val topObjects = JetTopLevelObjectShortNameIndex.getInstance().get(name, project, scope) diff --git a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt index 4a269cbddfd..756db940281 100644 --- a/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt +++ b/idea/src/org/jetbrains/jet/plugin/completion/CompletionSession.kt @@ -155,13 +155,9 @@ class BasicCompletionSession(configuration: CompletionSessionConfiguration, } private fun addKotlinTopLevelDeclarations() { - collector.addDescriptorElements(shortNamesCache.getTopLevelCallables({ prefixMatcher.prefixMatches(it) }, jetReference!!.expression, resolveSession, searchScope)) - - for (name in shortNamesCache.getAllTopLevelObjectNames()) { - if (prefixMatcher.prefixMatches(name)) { - collector.addDescriptorElements(shortNamesCache.getTopLevelObjectsByName(name, resolveSession, searchScope)) - } - } + val filter = { (name: String) -> prefixMatcher.prefixMatches(name) } + collector.addDescriptorElements(shortNamesCache.getTopLevelCallables(filter, jetReference!!.expression, resolveSession, searchScope) + + shortNamesCache.getTopLevelObjects(filter, resolveSession, searchScope)) } private fun addKotlinExtensions() {