diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/AbstractImportCandidatesProvider.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/AbstractImportCandidatesProvider.kt index 2219a888d960..f7ad9c30c7eb 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/AbstractImportCandidatesProvider.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/AbstractImportCandidatesProvider.kt @@ -42,7 +42,7 @@ internal abstract class AbstractImportCandidatesProvider(): ImportCandidatesProv protected fun PsiMember.canBeImported(): Boolean { return when (this) { - is PsiClass -> qualifiedName != null && (containingClass == null || hasModifier(JvmModifier.STATIC) || importContext.positionTypeAndReceiver.acceptsInnerClasses()) + is PsiClass -> qualifiedName != null && (containingClass == null || hasModifier(JvmModifier.STATIC) || importContext.positionType.acceptsInnerClasses()) is PsiField, is PsiMethod -> hasModifier(JvmModifier.STATIC) && containingClass?.qualifiedName != null else -> false } @@ -53,7 +53,7 @@ internal abstract class AbstractImportCandidatesProvider(): ImportCandidatesProv is KtProperty -> isTopLevel || containingClassOrObject is KtObjectDeclaration is KtNamedFunction -> isTopLevel || containingClassOrObject is KtObjectDeclaration is KtTypeAlias -> true - is KtClassOrObject -> !isLocal && (!isInner || importContext.positionTypeAndReceiver.acceptsInnerClasses()) + is KtClassOrObject -> !isLocal && (!isInner || importContext.positionType.acceptsInnerClasses()) else -> false } @@ -64,6 +64,6 @@ internal abstract class AbstractImportCandidatesProvider(): ImportCandidatesProv private val KtClassLikeDeclaration.isInner: Boolean get() = hasModifier(KtTokens.INNER_KEYWORD) - private fun ImportPositionTypeAndReceiver<*, *>.acceptsInnerClasses(): Boolean = - this is ImportPositionTypeAndReceiver.TypeReference || this is ImportPositionTypeAndReceiver.KDocNameReference -} \ No newline at end of file + private fun ImportPositionType.acceptsInnerClasses(): Boolean = + this is ImportPositionType.TypeReference || this is ImportPositionType.KDocNameReference +} diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/CallableImportCandidatesProvider.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/CallableImportCandidatesProvider.kt index f78a4b18ade7..54152bcb5789 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/CallableImportCandidatesProvider.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/CallableImportCandidatesProvider.kt @@ -22,12 +22,12 @@ internal class CallableImportCandidatesProvider( acceptsKotlinCallableAtPosition(kotlinCallable) && !kotlinCallable.isImported() && kotlinCallable.canBeImported() private fun acceptsKotlinCallableAtPosition(kotlinCallable: KtCallableDeclaration): Boolean = - when (importContext.positionTypeAndReceiver) { - is ImportPositionTypeAndReceiver.InfixCall -> { + when (importContext.positionType) { + is ImportPositionType.InfixCall -> { kotlinCallable.hasModifier(KtTokens.INFIX_KEYWORD) && kotlinCallable.isExtensionDeclaration() } - is ImportPositionTypeAndReceiver.OperatorCall -> { + is ImportPositionType.OperatorCall -> { kotlinCallable.hasModifier(KtTokens.OPERATOR_KEYWORD) && kotlinCallable.isExtensionDeclaration() } @@ -38,20 +38,20 @@ internal class CallableImportCandidatesProvider( acceptsJavaCallableAtPosition() && !javaCallable.isImported() && javaCallable.canBeImported() private fun acceptsJavaCallableAtPosition(): Boolean = - when (importContext.positionTypeAndReceiver) { - is ImportPositionTypeAndReceiver.InfixCall, - is ImportPositionTypeAndReceiver.OperatorCall -> false + when (importContext.positionType) { + is ImportPositionType.InfixCall, + is ImportPositionType.OperatorCall -> false else -> true } private fun acceptsCallableCandidate(kotlinCallable: CallableImportCandidate): Boolean = - when (importContext.positionTypeAndReceiver) { - is ImportPositionTypeAndReceiver.InfixCall -> { + when (importContext.positionType) { + is ImportPositionType.InfixCall -> { val functionSymbol = kotlinCallable.symbol as? KaNamedFunctionSymbol functionSymbol?.isInfix == true && functionSymbol.isExtension } - is ImportPositionTypeAndReceiver.OperatorCall -> { + is ImportPositionType.OperatorCall -> { val functionSymbol = kotlinCallable.symbol as? KaNamedFunctionSymbol functionSymbol?.isOperator == true && functionSymbol.isExtension } @@ -89,7 +89,7 @@ internal class CallableImportCandidatesProvider( allowInapplicableExtensions -> { // extensions were already provided } - importContext.positionTypeAndReceiver is ImportPositionTypeAndReceiver.KDocNameReference -> { + importContext.positionType is ImportPositionType.KDocNameReference -> { // we do not try to complete extensions for KDocs for now // TODO consider combining this with allowInapplicableExtensions flag } diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ClassifierImportCandidatesProvider.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ClassifierImportCandidatesProvider.kt index dbd6e123e81e..8f4472a9b569 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ClassifierImportCandidatesProvider.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ClassifierImportCandidatesProvider.kt @@ -60,7 +60,7 @@ internal class AnnotationImportCandidatesProvider( ) : ClassifierImportCandidatesProvider(importContext) { init { - requireIsInstance(importContext.positionTypeAndReceiver) + requireIsInstance(importContext.positionType) } override fun acceptsKotlinClass(kotlinClass: KtClassLikeDeclaration): Boolean { @@ -86,7 +86,7 @@ internal class ConstructorReferenceImportCandidatesProvider( ) : ClassifierImportCandidatesProvider(importContext) { init { - requireIsInstance(importContext.positionTypeAndReceiver) + requireIsInstance(importContext.positionType) } override fun acceptsKotlinClass(kotlinClass: KtClassLikeDeclaration): Boolean { diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/EnumEntryImportCandidatesProvider.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/EnumEntryImportCandidatesProvider.kt index fc2d226cd79c..9bc97f32363d 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/EnumEntryImportCandidatesProvider.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/EnumEntryImportCandidatesProvider.kt @@ -14,7 +14,7 @@ internal class EnumEntryImportCandidatesProvider(override val importContext: Imp AbstractImportCandidatesProvider() { init { - requireIsInstance(importContext.positionTypeAndReceiver) + requireIsInstance(importContext.positionType) } private fun acceptsKotlinEnumEntry(enumEntry: KtEnumEntry): Boolean { @@ -45,4 +45,4 @@ internal class EnumEntryImportCandidatesProvider(override val importContext: Imp .filter { it.isVisible(visibilityChecker) } .toList() } -} \ No newline at end of file +} diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ImportContext.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ImportContext.kt index 5d77b8638ef8..b87b237f4f36 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ImportContext.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/ImportContext.kt @@ -6,6 +6,7 @@ import org.jetbrains.kotlin.psi.KtElement internal interface ImportContext { val position: KtElement val positionTypeAndReceiver: ImportPositionTypeAndReceiver<*, *> + val positionType: ImportPositionType get() = positionTypeAndReceiver.positionType } internal class DefaultImportContext( diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/MismatchedArgumentsImportQuickFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/MismatchedArgumentsImportQuickFixFactory.kt index 1cf3d835754d..957ef5ecd7a7 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/MismatchedArgumentsImportQuickFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/MismatchedArgumentsImportQuickFixFactory.kt @@ -67,16 +67,16 @@ internal object MismatchedArgumentsImportQuickFixFactory : AbstractImportQuickFi context(KaSession) private fun getCandidateProvidersForUnresolvedNameReference( importContext: ImportContext, - ): Sequence = when (importContext.positionTypeAndReceiver) { - is ImportPositionTypeAndReceiver.DefaultCall -> sequenceOf( + ): Sequence = when (importContext.positionType) { + is ImportPositionType.DefaultCall -> sequenceOf( CallableImportCandidatesProvider(importContext), ClassifierImportCandidatesProvider(importContext), ) - is ImportPositionTypeAndReceiver.DotCall, - is ImportPositionTypeAndReceiver.SafeCall, - is ImportPositionTypeAndReceiver.InfixCall, - is ImportPositionTypeAndReceiver.OperatorCall -> sequenceOf( + is ImportPositionType.DotCall, + is ImportPositionType.SafeCall, + is ImportPositionType.InfixCall, + is ImportPositionType.OperatorCall -> sequenceOf( CallableImportCandidatesProvider(importContext), ) diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/UnresolvedNameReferenceImportQuickFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/UnresolvedNameReferenceImportQuickFixFactory.kt index 08da74fa5ced..e85948b04de7 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/UnresolvedNameReferenceImportQuickFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/imprt/factories/UnresolvedNameReferenceImportQuickFixFactory.kt @@ -43,37 +43,37 @@ internal object UnresolvedNameReferenceImportQuickFixFactory : AbstractImportQui context(KaSession) private fun getCandidateProvidersForUnresolvedNameReference( importContext: ImportContext, - ): Sequence = when (importContext.positionTypeAndReceiver) { - is ImportPositionTypeAndReceiver.TypeReference -> sequenceOf( + ): Sequence = when (importContext.positionType) { + is ImportPositionType.TypeReference -> sequenceOf( ClassifierImportCandidatesProvider(importContext), ) - is ImportPositionTypeAndReceiver.Annotation -> sequenceOf( + is ImportPositionType.Annotation -> sequenceOf( AnnotationImportCandidatesProvider(importContext), ) - is ImportPositionTypeAndReceiver.DefaultCall -> sequenceOf( + is ImportPositionType.DefaultCall -> sequenceOf( CallableImportCandidatesProvider(importContext), ClassifierImportCandidatesProvider(importContext), EnumEntryImportCandidatesProvider(importContext), ) - is ImportPositionTypeAndReceiver.DotCall, - is ImportPositionTypeAndReceiver.SafeCall, - is ImportPositionTypeAndReceiver.InfixCall, - is ImportPositionTypeAndReceiver.OperatorCall -> sequenceOf( + is ImportPositionType.DotCall, + is ImportPositionType.SafeCall, + is ImportPositionType.InfixCall, + is ImportPositionType.OperatorCall -> sequenceOf( CallableImportCandidatesProvider(importContext), ) - is ImportPositionTypeAndReceiver.KDocNameReference -> sequenceOf( + is ImportPositionType.KDocNameReference -> sequenceOf( // TODO this is currently reported by KDocUnresolvedReferenceInspection ) - is ImportPositionTypeAndReceiver.CallableReference -> sequenceOf( + is ImportPositionType.CallableReference -> sequenceOf( CallableImportCandidatesProvider(importContext), ConstructorReferenceImportCandidatesProvider(importContext), ) else -> sequenceOf() } -} \ No newline at end of file +}