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