From 2a2fa5d4f286f446d2a1215dd8feee8047ac9f25 Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Fri, 28 Nov 2014 20:32:39 +0300 Subject: [PATCH] More simple and effective top-level declarations by name search --- .../jet/plugin/caches/KotlinIndicesHelper.kt | 40 +++---------------- 1 file changed, 5 insertions(+), 35 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt index 4e6223e6e92..b4cc016d0d5 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt +++ b/idea/src/org/jetbrains/jet/plugin/caches/KotlinIndicesHelper.kt @@ -36,7 +36,6 @@ import org.jetbrains.jet.lang.resolve.calls.smartcasts.DataFlowInfo import com.intellij.psi.stubs.StringStubIndexExtension import org.jetbrains.jet.plugin.caches.resolve.ResolutionFacade import org.jetbrains.jet.plugin.util.extensionsUtils.isExtensionCallable -import org.jetbrains.jet.plugin.caches.resolve.getResolutionFacade public class KotlinIndicesHelper( private val project: Project, @@ -59,44 +58,15 @@ public class KotlinIndicesHelper( } } - result.addSourceTopLevelFunctions(name) - result.addSourceTopLevelProperties(name) + JetTopLevelNonExtensionFunctionShortNameIndex.getInstance().get(name, project, scope) + .mapTo(result) { resolutionFacade.resolveToDescriptor(it) as CallableDescriptor } + + JetTopLevelNonExtensionPropertyShortNameIndex.getInstance().get(name, project, scope) + .mapTo(result) { resolutionFacade.resolveToDescriptor(it) as CallableDescriptor } return result.filter(visibilityFilter) } - private fun MutableCollection.addSourceTopLevelFunctions(name: String) { - val identifier = Name.identifier(name) - val affectedPackages = JetTopLevelNonExtensionFunctionShortNameIndex.getInstance().get(name, project, scope) - .stream() - .map { it.getContainingFile() } - .filterIsInstance(javaClass()) - .map { it.getPackageFqName() } - .toSet() - - for (affectedPackage in affectedPackages) { - val packageDescriptor = moduleDescriptor.getPackage(affectedPackage) - ?: error("There's a function in stub index with invalid package: $affectedPackage") - addAll(packageDescriptor.getMemberScope().getFunctions(identifier)) - } - } - - private fun MutableCollection.addSourceTopLevelProperties(name: String) { - val identifier = Name.identifier(name) - val affectedPackages = JetTopLevelNonExtensionPropertyShortNameIndex.getInstance().get(name, project, scope) - .stream() - .map { it.getContainingFile() } - .filterIsInstance(javaClass()) - .map { it.getPackageFqName() } - .toSet() - - for (affectedPackage in affectedPackages) { - val packageDescriptor = moduleDescriptor.getPackage(affectedPackage) - ?: error("There's a property in stub index with invalid package: $affectedPackage") - addAll(packageDescriptor.getMemberScope().getProperties(identifier)) - } - } - public fun getTopLevelCallables(nameFilter: (String) -> Boolean, context: JetExpression /*TODO: to be dropped*/): Collection { val sourceNames = JetTopLevelFunctionFqnNameIndex.getInstance().getAllKeys(project).stream() + JetTopLevelPropertyFqnNameIndex.getInstance().getAllKeys(project).stream() val allFqNames = sourceNames.map { FqName(it) } + JetFromJavaDescriptorHelper.getTopLevelCallableFqNames(project, scope, false).stream()