diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/K2CompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/K2CompletionContributor.kt index 92af4217d00d..7bc3c9dee97e 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/K2CompletionContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/K2CompletionContributor.kt @@ -254,13 +254,15 @@ internal abstract class K2CompletionContributor
( context(_: KaSession, context: K2CompletionSectionContext
) open fun shouldExecute(): Boolean = true - protected fun K2CompletionSectionContext
.addElement(element: LookupElement) { - sink.addElement(decorateLookupElement(element)) + context(_: KaSession, context: K2CompletionSectionContext
) + protected fun addElement(element: LookupElement) { + context.sink.addElement(decorateLookupElement(element)) } - protected fun K2CompletionSectionContext
.addElements(elements: Iterable )
+ protected fun addElements(elements: Iterable (
*/
protected open fun K2CompletionSectionContext .getGroupPriority(): Int = 0
- private fun K2CompletionSectionContext .decorateLookupElement(
+ context(_: KaSession, context: K2CompletionSectionContext )
+ private fun decorateLookupElement(
element: LookupElement,
): LookupElement {
- element.groupPriority = getGroupPriority()
+ element.groupPriority = context.getGroupPriority()
element.contributorClass = this::class.java
- if (isAtFunctionLiteralStart(parameters.position)) {
+ if (isAtFunctionLiteralStart(context.parameters.position)) {
element.suppressItemSelectionByCharsOnTyping = true
}
- val bracesInsertHandler = when (parameters.type) {
+ val bracesInsertHandler = when (context.parameters.type) {
KotlinFirCompletionParameters.CorrectionType.BRACES_FOR_STRING_TEMPLATE -> InsertStringTemplateBracesInsertHandler
else -> WrapSingleStringTemplateEntryWithBracesInsertHandler
}
return LookupElementDecorator.withDelegateInsertHandler(
LookupElementDecorator.withDelegateInsertHandler(element, bracesInsertHandler),
- CompletionCharInsertHandler(parameters.delegate.isAutoPopup),
+ CompletionCharInsertHandler(context.parameters.delegate.isAutoPopup),
)
}
}
diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ActualDeclarationContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ActualDeclarationContributor.kt
index 16ba4ee44e31..e38cde93a941 100644
--- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ActualDeclarationContributor.kt
+++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ActualDeclarationContributor.kt
@@ -38,7 +38,7 @@ internal class K2ActualDeclarationContributor : K2SimpleCompletionContributor )
@@ -753,7 +753,7 @@ internal abstract class K2AbstractCallableCompletionContributor )
@@ -774,7 +774,7 @@ internal abstract class K2AbstractCallableCompletionContributor )
@@ -803,7 +803,7 @@ internal abstract class K2AbstractCallableCompletionContributor )
@@ -856,7 +856,7 @@ internal abstract class K2AbstractCallableCompletionContributor )
diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassReferenceCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassReferenceCompletionContributor.kt
index 600aeb91f100..2f3dda0460ad 100644
--- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassReferenceCompletionContributor.kt
+++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassReferenceCompletionContributor.kt
@@ -14,9 +14,9 @@ internal class K2ClassReferenceCompletionContributor : K2SimpleCompletionContrib
context(_: KaSession, context: K2CompletionSectionContext )
diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TypeParameterConstraintNameInWhereClauseCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TypeParameterConstraintNameInWhereClauseCompletionContributor.kt
index f5b70360c27b..bf0949d6da51 100644
--- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TypeParameterConstraintNameInWhereClauseCompletionContributor.kt
+++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TypeParameterConstraintNameInWhereClauseCompletionContributor.kt
@@ -38,7 +38,7 @@ internal class K2TypeParameterConstraintNameInWhereClauseCompletionContributor :
.withInsertHandler(TypeParameterInWhenClauseInsertionHandler)
.withPsiElement(typeParameter.psi)
.withIcon(icon)
- .let { context.addElement(it) }
+ .let { addElement(it) }
}
}
}
diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2VariableOrParameterNameWithTypeCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2VariableOrParameterNameWithTypeCompletionContributor.kt
index 567e8424f775..0c963d0aaab4 100644
--- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2VariableOrParameterNameWithTypeCompletionContributor.kt
+++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2VariableOrParameterNameWithTypeCompletionContributor.kt
@@ -135,7 +135,7 @@ internal class K2VariableOrParameterNameWithTypeCompletionContributor : K2Simple
if (!shouldInsertType(contextElement) && lookupNamesAdded.contains(name)) continue
lookupElement.nameWithTypePriority = -count // suggestions that appear more often than others get higher priority
- context.addElement(lookupElement)
+ addElement(lookupElement)
lookupNamesAdded.add(name)
}
}
@@ -225,7 +225,7 @@ internal class K2VariableOrParameterNameWithTypeCompletionContributor : K2Simple
lookupElement.nameWithTypePriority = userPrefix.length // suggestions with longer user prefix get lower priority
lookupElement.applyWeighs(KtSymbolWithOrigin(symbol, scopeKind))
- context.addElement(lookupElement)
+ addElement(lookupElement)
}
}
diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2WhenWithSubjectConditionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2WhenWithSubjectConditionContributor.kt
index fdae33aaeaa7..15b549485804 100644
--- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2WhenWithSubjectConditionContributor.kt
+++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2WhenWithSubjectConditionContributor.kt
@@ -92,9 +92,9 @@ internal class K2WhenWithSubjectConditionContributor : K2SimpleCompletionContrib
val isSingleCondition = whenCondition.isSingleConditionInEntry()
createNullBranchLookupElement(subjectType)
- ?.let { context.addElement(it) }
+ ?.let { addElement(it) }
createElseBranchLookupElement(whenCondition)
- ?.let { context.addElement(it) }
+ ?.let { addElement(it) }
when {
classSymbol?.classKind == KaClassKind.ENUM_CLASS -> {
@@ -163,7 +163,7 @@ internal class K2WhenWithSubjectConditionContributor : K2SimpleCompletionContrib
fqName = (classifier as? KaNamedClassSymbol)?.classId?.asSingleFqName(),
isSingleCondition = isSingleCondition,
)
- }.forEach { context.addElement(it) }
+ }.forEach { addElement(it) }
if (prefixMatcher.prefix.isNotEmpty()) {
context.completeLaterInSameSession("Index", priority = K2ContributorSectionPriority.FROM_INDEX) {
@@ -183,7 +183,11 @@ internal class K2WhenWithSubjectConditionContributor : K2SimpleCompletionContrib
fqName = (classifier as? KaNamedClassSymbol)?.classId?.asSingleFqName(),
isSingleCondition = isSingleCondition,
)
- }.forEach { innerContext.addElement(it) }
+ }.forEach {
+ context(innerContext) {
+ addElement(it)
+ }
+ }
}
}
}
@@ -227,7 +231,7 @@ internal class K2WhenWithSubjectConditionContributor : K2SimpleCompletionContrib
fqName = classId.asSingleFqName(),
isSingleCondition = isSingleCondition,
)
- }.forEach { context.addElement(it) }
+ }.forEach { addElement(it) }
if (getAllSealedInheritors(classSymbol).any { it.modality == KaSymbolModality.ABSTRACT }) {
completeAllTypes(
@@ -307,7 +311,7 @@ internal class K2WhenWithSubjectConditionContributor : K2SimpleCompletionContrib
fqName = entry.callableId?.asSingleFqName(),
isSingleCondition = isSingleCondition,
)
- }.forEach { context.addElement(it) }
+ }.forEach { addElement(it) }
}
private fun KtWhenCondition.isSingleConditionInEntry(): Boolean {