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) { + context(_: KaSession, context: K2CompletionSectionContext

) + protected fun addElements(elements: Iterable) { val decoratedElements = elements.map { decorateLookupElement(it) } - sink.addElements(decoratedElements) + context.sink.addElements(decoratedElements) } /** @@ -272,24 +274,25 @@ internal abstract class K2CompletionContributor

( */ 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) @@ -258,7 +258,7 @@ internal abstract class K2AbstractCallableCompletionContributor

) @@ -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) override fun complete() { if (context.positionContext.explicitReceiver == null) return - context.addElement(createKeywordElement("class")) + addElement(createKeywordElement("class")) if (context.completionContext.targetPlatform.isJvm()) { - context.addElement(createKeywordElement("class", tail = ".java")) + addElement(createKeywordElement("class", tail = ".java")) } } } \ No newline at end of file diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassifierCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassifierCompletionContributor.kt index 043c4ee2414a..25c12276ba58 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassifierCompletionContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ClassifierCompletionContributor.kt @@ -182,7 +182,7 @@ internal open class K2ClassifierCompletionContributor : K2CompletionContributor< } } - scopeClassifiers.forEach { sectionContext.addElement(it) } + scopeClassifiers.forEach { addElement(it) } } context(_: KaSession, sectionContext: K2CompletionSectionContext) @@ -222,7 +222,7 @@ internal open class K2ClassifierCompletionContributor : K2CompletionContributor< emptySequence() } - indexClassifiers.forEach { sectionContext.addElement(it) } + indexClassifiers.forEach { addElement(it) } } context(_: KaSession, sectionContext: K2CompletionSectionContext) @@ -244,7 +244,7 @@ internal open class K2ClassifierCompletionContributor : K2CompletionContributor< positionContext = sectionContext.positionContext, visibilityChecker = sectionContext.visibilityChecker, ).map { it.applyWeighs(symbolWithOrigin) } - }.forEach { sectionContext.addElement(it) } + }.forEach { addElement(it) } } else { sectionContext.sink.registerChainContributor(this) } diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromOverridableMembersContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromOverridableMembersContributor.kt index f11912a60f7b..6ab232a686bc 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromOverridableMembersContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromOverridableMembersContributor.kt @@ -48,7 +48,7 @@ internal class K2DeclarationFromOverridableMembersContributor : K2SimpleCompleti if (declaration.hasModifier(KtTokens.OVERRIDE_KEYWORD)) { val elements = OverrideKeywordHandler(context.importStrategyDetector) .createOverrideMemberLookups(context.parameters, declaration, context.project) - context.addElements(elements) + addElements(elements) } } diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromUnresolvedNameContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromUnresolvedNameContributor.kt index 0f1327f9d156..cea818288fc2 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromUnresolvedNameContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2DeclarationFromUnresolvedNameContributor.kt @@ -68,7 +68,7 @@ internal class K2DeclarationFromUnresolvedNameContributor : K2SimpleCompletionCo if (unresolvedRef.reference?.resolve() == null) { val lookupElement = LookupElementBuilder.create(name).suppressAutoInsertion() .also { it.priority = ItemPriority.FROM_UNRESOLVED_NAME_SUGGESTION } - context.addElement(lookupElement) + addElement(lookupElement) } } diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ImportDirectivePackageMembersCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ImportDirectivePackageMembersCompletionContributor.kt index f6b8b85ac9dd..42bcfdd7fdc0 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ImportDirectivePackageMembersCompletionContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2ImportDirectivePackageMembersCompletionContributor.kt @@ -44,6 +44,6 @@ internal class K2ImportDirectivePackageMembersCompletionContributor : K2SimpleCo scopeKind = scopeWithKind.kind, ) } - }.forEach { context.addElement(it) } + }.forEach { addElement(it) } } } \ No newline at end of file diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KDocParameterNameContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KDocParameterNameContributor.kt index 97c52ac01d5b..4d0d79bf85db 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KDocParameterNameContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KDocParameterNameContributor.kt @@ -43,7 +43,7 @@ internal class K2KDocParameterNameContributor : K2SimpleCompletionContributor) diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KeywordCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KeywordCompletionContributor.kt index 2dc817a290be..86c12b0f27ef 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KeywordCompletionContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2KeywordCompletionContributor.kt @@ -81,7 +81,7 @@ internal class K2KeywordCompletionContributor : K2SimpleCompletionContributor.isAppropriatePosition(): Boolean = when (position) { diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SameAsFileClassifierNameCompletionContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SameAsFileClassifierNameCompletionContributor.kt index a880fed4bd07..a4c17eea05cb 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SameAsFileClassifierNameCompletionContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SameAsFileClassifierNameCompletionContributor.kt @@ -16,14 +16,15 @@ internal class K2SameAsFileClassifierNameCompletionContributor : K2SimpleComplet context(_: KaSession, context: K2CompletionSectionContext) override fun complete() { - (context.positionContext.classLikeDeclaration as? KtClassOrObject)?.let { context.completeTopLevelClassName(it) } + (context.positionContext.classLikeDeclaration as? KtClassOrObject)?.let { completeTopLevelClassName(it) } } - private fun K2CompletionSectionContext.completeTopLevelClassName(classOrObject: KtClassOrObject) { + context(_: KaSession, context: K2CompletionSectionContext) + private fun completeTopLevelClassName(classOrObject: KtClassOrObject) { if (!classOrObject.isTopLevel()) return - val name = completionContext.originalFile.virtualFile.nameWithoutExtension + val name = context.completionContext.originalFile.virtualFile.nameWithoutExtension if (!isValidUpperCapitalizedClassName(name)) return - if (completionContext.originalFile.declarations.any { it is KtClassOrObject && it.name == name }) return + if (context.completionContext.originalFile.declarations.any { it is KtClassOrObject && it.name == name }) return addElement(LookupElementBuilder.create(name)) } diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SuperEntryContributor.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SuperEntryContributor.kt index 8a229bfdad5a..e027a55c996c 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SuperEntryContributor.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2SuperEntryContributor.kt @@ -26,7 +26,7 @@ internal class K2SuperEntryContributor : K2SimpleCompletionContributor) diff --git a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TrailingFunctionParameterNameCompletionContributorBase.kt b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TrailingFunctionParameterNameCompletionContributorBase.kt index 9353ae0c904b..2c39366b2fcd 100644 --- a/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TrailingFunctionParameterNameCompletionContributorBase.kt +++ b/plugins/kotlin/completion/impl-k2/src/org/jetbrains/kotlin/idea/completion/impl/k2/contributors/K2TrailingFunctionParameterNameCompletionContributorBase.kt @@ -135,7 +135,7 @@ internal sealed class K2TrailingFunctionParameterNameCompletionContributorBase

) 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 {