From ae212f36f51f213295f8f642e2913a60e345a6c4 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 10 May 2021 18:12:06 +0200 Subject: [PATCH] FIR IDE: move addElementToCompletion to FirCompletionContributorBase --- .../KotlinFirCompletionContributor.kt | 16 ----------- .../FirCompletionContributorBase.kt | 28 +++++++++++++++++++ 2 files changed, 28 insertions(+), 16 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 95dc70cdd11..2671c2cb013 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 @@ -146,22 +146,6 @@ private class KotlinWithNameReferenceCompletionProvider( private val shouldCompleteTopLevelCallablesFromIndex: Boolean get() = prefixMatcher.prefix.isNotEmpty() - private fun KtAnalysisSession.addSymbolToCompletion(completionResultSet: CompletionResultSet, expectedType: KtType?, symbol: KtSymbol) { - if (symbol !is KtNamedSymbol) return - with(lookupElementFactory) { - createLookupElement(symbol) - ?.let { applyWeighers(it, symbol, expectedType) } - ?.let(completionResultSet::addElement) - } - } - - private fun KtAnalysisSession.applyWeighers( - lookupElement: LookupElement, - symbol: KtSymbol, - expectedType: KtType? - ): LookupElement = lookupElement.apply { - with(Weighers) { applyWeighsToLookupElement(lookupElement, symbol, expectedType) } - } fun KtAnalysisSession.addCompletions( positionContext: FirNameReferencePositionContext diff --git a/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/contributors/FirCompletionContributorBase.kt b/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/contributors/FirCompletionContributorBase.kt index a85348b5106..f93b5209d62 100644 --- a/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/contributors/FirCompletionContributorBase.kt +++ b/idea/idea-fir/src/org/jetbrains/kotlin/idea/completion/contributors/FirCompletionContributorBase.kt @@ -8,8 +8,16 @@ package org.jetbrains.kotlin.idea.completion.contributors import com.intellij.codeInsight.completion.CompletionParameters import com.intellij.codeInsight.completion.CompletionResultSet import com.intellij.codeInsight.completion.PrefixMatcher +import com.intellij.codeInsight.lookup.LookupElement import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.idea.completion.KotlinFirLookupElementFactory import org.jetbrains.kotlin.idea.completion.context.FirBasicCompletionContext +import org.jetbrains.kotlin.idea.completion.weighers.Weighers +import org.jetbrains.kotlin.idea.completion.weighers.Weighers.applyWeighsToLookupElement +import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession +import org.jetbrains.kotlin.idea.frontend.api.symbols.KtSymbol +import org.jetbrains.kotlin.idea.frontend.api.symbols.markers.KtNamedSymbol +import org.jetbrains.kotlin.idea.frontend.api.types.KtType import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.psi.KtFile @@ -21,4 +29,24 @@ internal abstract class FirCompletionContributorBase(protected val basicContext: protected val fakeKtFile: KtFile get() = basicContext.fakeKtFile protected val project: Project get() = basicContext.project protected val targetPlatform: TargetPlatform get() = basicContext.targetPlatform + + + protected val lookupElementFactory = KotlinFirLookupElementFactory() + + protected fun KtAnalysisSession.addSymbolToCompletion(expectedType: KtType?, symbol: KtSymbol) { + if (symbol !is KtNamedSymbol) return + with(lookupElementFactory) { + createLookupElement(symbol) + ?.let { applyWeighers(it, symbol, expectedType) } + ?.let(result::addElement) + } + } + + private fun KtAnalysisSession.applyWeighers( + lookupElement: LookupElement, + symbol: KtSymbol, + expectedType: KtType? + ): LookupElement = lookupElement.apply { + with(Weighers) { applyWeighsToLookupElement(lookupElement, symbol, expectedType) } + } } \ No newline at end of file