From 1ab6595ae24a996d4fba169ac722ac18607bca45 Mon Sep 17 00:00:00 2001 From: Roman Golyshev Date: Wed, 16 Sep 2020 13:23:43 +0300 Subject: [PATCH] FIR Completion: Use name filtering in completion contributor --- .../KotlinFirCompletionContributor.kt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt b/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt index 363dbbd7759..ac2e8b8cff7 100644 --- a/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/KotlinFirCompletionContributor.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession import org.jetbrains.kotlin.idea.frontend.api.getAnalysisSessionFor import org.jetbrains.kotlin.idea.frontend.api.scopes.KtCompositeScope import org.jetbrains.kotlin.idea.frontend.api.scopes.KtScope +import org.jetbrains.kotlin.idea.frontend.api.scopes.KtScopeNameFilter import org.jetbrains.kotlin.idea.frontend.api.symbols.KtCallableSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol @@ -33,7 +34,7 @@ private object KotlinFirCompletionProvider : CompletionProvider !name.isSpecial && prefixMatcher.prefixMatches(name.identifier) } + private fun CompletionResultSet.addSymbolToCompletion(symbol: KtSymbol) { if (symbol !is KtNamedSymbol) return addElement(lookupElementFactory.createLookupElement(symbol)) @@ -92,7 +96,7 @@ private object KotlinAvailableScopesCompletionProvider { } private fun collectTypesCompletion(result: CompletionResultSet, implicitScopes: KtScope) { - val availableClasses = implicitScopes.getClassifierSymbols() + val availableClasses = implicitScopes.getClassifierSymbols(scopeNameFilter) availableClasses.forEach { result.addSymbolToCompletion(it) } } @@ -106,11 +110,11 @@ private object KotlinAvailableScopesCompletionProvider { val possibleReceiverScope = typeOfPossibleReceiver.getTypeScope() ?: return val nonExtensionMembers = possibleReceiverScope - .getCallableSymbols() + .getCallableSymbols(scopeNameFilter) .filterNot { it.isExtension } val extensionNonMembers = implicitScopes - .getCallableSymbols() + .getCallableSymbols(scopeNameFilter) .filter { it.isExtension && it.hasSuitableExtensionReceiver() } nonExtensionMembers.forEach { result.addSymbolToCompletion(it) } @@ -123,11 +127,11 @@ private object KotlinAvailableScopesCompletionProvider { hasSuitableExtensionReceiver: KtCallableSymbol.() -> Boolean, ) { val availableNonExtensions = implicitScopes - .getCallableSymbols() + .getCallableSymbols(scopeNameFilter) .filterNot { it.isExtension } val extensionsWhichCanBeCalled = implicitScopes - .getCallableSymbols() + .getCallableSymbols(scopeNameFilter) .filter { it.isExtension && it.hasSuitableExtensionReceiver() } availableNonExtensions.forEach { result.addSymbolToCompletion(it) }