FIR IDE: extract completion groups to object
This commit is contained in:
committed by
teamcityserver
parent
20f2e4f313
commit
0ebb9cc4a6
@@ -0,0 +1,83 @@
|
||||
/*
|
||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.idea.completion
|
||||
|
||||
import org.jetbrains.kotlin.idea.completion.context.*
|
||||
import org.jetbrains.kotlin.idea.completion.contributors.FirCompletionContributorFactory
|
||||
import org.jetbrains.kotlin.idea.completion.contributors.complete
|
||||
import org.jetbrains.kotlin.idea.frontend.api.KtAnalysisSession
|
||||
|
||||
internal object Completions {
|
||||
fun KtAnalysisSession.complete(
|
||||
factory: FirCompletionContributorFactory,
|
||||
positionContext: FirRawPositionCompletionContext,
|
||||
) {
|
||||
when (positionContext) {
|
||||
is FirExpressionNameReferencePositionContext -> {
|
||||
complete(factory.keywordContributor(0), positionContext)
|
||||
complete(factory.callableContributor(0), positionContext)
|
||||
complete(factory.classifierContributor(0), positionContext)
|
||||
complete(factory.packageCompletionContributor(1), positionContext)
|
||||
}
|
||||
|
||||
is FirTypeNameReferencePositionContext -> {
|
||||
complete(factory.classifierContributor(0), positionContext)
|
||||
complete(factory.keywordContributor(1), positionContext)
|
||||
complete(factory.packageCompletionContributor(2), positionContext)
|
||||
}
|
||||
|
||||
is FirAnnotationTypeNameReferencePositionContext -> {
|
||||
complete(factory.annotationsContributor(0), positionContext)
|
||||
complete(factory.keywordContributor(1), positionContext)
|
||||
complete(factory.packageCompletionContributor(2), positionContext)
|
||||
}
|
||||
|
||||
is FirSuperTypeCallNameReferencePositionContext -> {
|
||||
complete(factory.superEntryContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirImportDirectivePositionContext -> {
|
||||
complete(factory.packageCompletionContributor(0), positionContext)
|
||||
complete(factory.importDirectivePackageMembersContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirPackageDirectivePositionContext -> {
|
||||
complete(factory.packageCompletionContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirTypeConstraintNameInWhereClausePositionContext -> {
|
||||
complete(factory.typeParameterConstraintNameInWhereClauseContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirUnknownPositionContext -> {
|
||||
complete(factory.keywordContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirClassifierNamePositionContext -> {
|
||||
complete(factory.classifierNameContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirWithSubjectEntryPositionContext -> {
|
||||
complete(factory.whenWithSubjectConditionContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirCallableReferencePositionContext -> {
|
||||
complete(factory.classReferenceContributor(0), positionContext)
|
||||
complete(factory.callableReferenceContributor(1), positionContext)
|
||||
complete(factory.classifierReferenceContributor(1), positionContext)
|
||||
}
|
||||
|
||||
is FirInfixCallPositionContext -> {
|
||||
complete(factory.keywordContributor(0), positionContext)
|
||||
complete(factory.infixCallableContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirIncorrectPositionContext -> {
|
||||
// do nothing, completion is not supposed to be called here
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+2
-64
@@ -77,70 +77,8 @@ private object KotlinFirCompletionProvider : CompletionProvider<CompletionParame
|
||||
positionContext: FirRawPositionCompletionContext,
|
||||
) {
|
||||
val factory = FirCompletionContributorFactory(basicContext)
|
||||
|
||||
when (positionContext) {
|
||||
is FirExpressionNameReferencePositionContext -> {
|
||||
complete(factory.keywordContributor(1), positionContext)
|
||||
complete(factory.callableContributor(1), positionContext)
|
||||
complete(factory.classifierContributor(1), positionContext)
|
||||
complete(factory.packageCompletionContributor(2), positionContext)
|
||||
}
|
||||
|
||||
is FirTypeNameReferencePositionContext -> {
|
||||
complete(factory.classifierContributor(0), positionContext)
|
||||
complete(factory.keywordContributor(1), positionContext)
|
||||
complete(factory.packageCompletionContributor(2), positionContext)
|
||||
}
|
||||
|
||||
is FirAnnotationTypeNameReferencePositionContext -> {
|
||||
complete(factory.annotationsContributor(0), positionContext)
|
||||
complete(factory.keywordContributor(1), positionContext)
|
||||
complete(factory.packageCompletionContributor(2), positionContext)
|
||||
}
|
||||
|
||||
is FirSuperTypeCallNameReferencePositionContext -> {
|
||||
complete(factory.superEntryContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirImportDirectivePositionContext -> {
|
||||
complete(factory.packageCompletionContributor(0), positionContext)
|
||||
complete(factory.importDirectivePackageMembersContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirPackageDirectivePositionContext -> {
|
||||
complete(factory.packageCompletionContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirTypeConstraintNameInWhereClausePositionContext -> {
|
||||
complete(factory.typeParameterConstraintNameInWhereClauseContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirUnknownPositionContext -> {
|
||||
complete(factory.keywordContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirClassifierNamePositionContext -> {
|
||||
complete(factory.classifierNameContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirWithSubjectEntryPositionContext -> {
|
||||
complete(factory.whenWithSubjectConditionContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirCallableReferencePositionContext -> {
|
||||
complete(factory.classReferenceContributor(0), positionContext)
|
||||
complete(factory.callableReferenceContributor(1), positionContext)
|
||||
complete(factory.classifierReferenceContributor(1), positionContext)
|
||||
}
|
||||
|
||||
is FirInfixCallPositionContext -> {
|
||||
complete(factory.keywordContributor(0), positionContext)
|
||||
complete(factory.infixCallableContributor(0), positionContext)
|
||||
}
|
||||
|
||||
is FirIncorrectPositionContext -> {
|
||||
// do nothing, completion is not supposed to be called here
|
||||
}
|
||||
with(Completions) {
|
||||
complete(factory, positionContext)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user