From 78a2d2117ad1b59478abfe730cb8f95c18e7108b Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Thu, 20 Jun 2024 23:30:37 +0900 Subject: [PATCH] [kotlin] Adapt new code to changes in Analysis API on 'kt-master' merge GitOrigin-RevId: e2eba9d30707d326e91287763d04a6a14fa653b5 --- .../ReplacePrimitiveCastWithNumberConversionFixFactory.kt | 2 ++ .../fixes/replaceWith/DeprecatedSymbolUsageFixBase.kt | 3 ++- .../idea/k2/codeinsight/intentions/ImportMemberIntention.kt | 5 ++++- .../idea/k2/codeinsight/copyPaste/KotlinCopyPasteUtils.kt | 4 +++- .../codeinsight/copyPaste/KotlinReferenceRestoringHelper.kt | 2 ++ .../jetbrains/kotlin/idea/codeinsight/utils/AnalysisUtils.kt | 2 +- .../idea/k2/refactoring/inline/codeInliner/CodeInliner.kt | 2 +- .../k2/refactoring/inline/codeInliner/InlinePostProcessor.kt | 2 +- 8 files changed, 16 insertions(+), 6 deletions(-) diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/ReplacePrimitiveCastWithNumberConversionFixFactory.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/ReplacePrimitiveCastWithNumberConversionFixFactory.kt index b02dd47e023f..417792421823 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/ReplacePrimitiveCastWithNumberConversionFixFactory.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/ReplacePrimitiveCastWithNumberConversionFixFactory.kt @@ -1,6 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package org.jetbrains.kotlin.idea.k2.codeinsight.fixes +import org.jetbrains.kotlin.analysis.api.KaExperimentalApi import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic import org.jetbrains.kotlin.analysis.api.renderer.types.impl.KaTypeRendererForSource @@ -11,6 +12,7 @@ import org.jetbrains.kotlin.types.Variance internal object ReplacePrimitiveCastWithNumberConversionFixFactory { + @OptIn(KaExperimentalApi::class) val replacePrimitiveCastWithNumberConversionFixFactory = KotlinQuickFixFactory.ModCommandBased { diagnostic: KaFirDiagnostic.CastNeverSucceeds -> val binaryExpression = diagnostic.psi diff --git a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/replaceWith/DeprecatedSymbolUsageFixBase.kt b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/replaceWith/DeprecatedSymbolUsageFixBase.kt index 6a85c03b4e58..570affd099c8 100644 --- a/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/replaceWith/DeprecatedSymbolUsageFixBase.kt +++ b/plugins/kotlin/code-insight/fixes-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/fixes/replaceWith/DeprecatedSymbolUsageFixBase.kt @@ -16,6 +16,7 @@ import org.jetbrains.kotlin.analysis.api.base.KaConstantValue import org.jetbrains.kotlin.analysis.api.fir.diagnostics.KaFirDiagnostic import org.jetbrains.kotlin.analysis.api.symbols.KaDeclarationSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaFunctionSymbol +import org.jetbrains.kotlin.analysis.api.symbols.KaNamedFunctionSymbol import org.jetbrains.kotlin.builtins.StandardNames import org.jetbrains.kotlin.idea.base.resources.KotlinBundle import org.jetbrains.kotlin.idea.codeinsight.api.applicators.fixes.KotlinQuickFixFactory.IntentionBased @@ -66,7 +67,7 @@ object DeprecationFixFactory { else -> null } ?: return emptyList() val expression = (referenceExpression.parent as? KtCallExpression)?.takeIf { - (kaSymbol as? KaFunctionSymbol)?.isOperator == true && referenceExpression.mainReference.resolve() is KtValVarKeywordOwner + (kaSymbol as? KaNamedFunctionSymbol)?.isOperator == true && referenceExpression.mainReference.resolve() is KtValVarKeywordOwner } ?: referenceExpression val replaceWithData = fetchReplaceWithPattern(kaSymbol) ?: return emptyList() diff --git a/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/ImportMemberIntention.kt b/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/ImportMemberIntention.kt index 272a3af719dc..3bc3174d5a03 100644 --- a/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/ImportMemberIntention.kt +++ b/plugins/kotlin/code-insight/intentions-k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/intentions/ImportMemberIntention.kt @@ -6,6 +6,7 @@ import com.intellij.codeInsight.intention.HighPriorityAction import com.intellij.modcommand.ActionContext import com.intellij.modcommand.ModPsiUpdater import com.intellij.modcommand.Presentation +import org.jetbrains.kotlin.analysis.api.KaIdeApi import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.components.ShortenCommand import org.jetbrains.kotlin.analysis.api.components.ShortenStrategy @@ -19,6 +20,7 @@ import org.jetbrains.kotlin.psi.KtNameReferenceExpression import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement import org.jetbrains.kotlin.psi.psiUtil.isInImportDirective +@OptIn(KaIdeApi::class) internal class ImportMemberIntention : KotlinApplicableModCommandAction(KtNameReferenceExpression::class), HighPriorityAction { @@ -61,6 +63,7 @@ internal class ImportMemberIntention : } context(KaSession) +@OptIn(KaIdeApi::class) private fun computeContext(psi: KtNameReferenceExpression, symbol: KtSymbol): ImportMemberIntention.Context? { return when (symbol) { is KaConstructorSymbol, @@ -90,7 +93,7 @@ private fun computeContext(psi: KtNameReferenceExpression, symbol: KtSymbol): Im is KaCallableSymbol -> { val callableId = symbol.callableId ?: return null if (callableId.callableName.isSpecial) return null - if (symbol.getImportableName() == null) return null + if (symbol.importableFqName == null) return null val shortenCommand = collectPossibleReferenceShortenings( psi.containingKtFile, classShortenStrategy = { ShortenStrategy.DO_NOT_SHORTEN }, diff --git a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinCopyPasteUtils.kt b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinCopyPasteUtils.kt index e78f0aa26efb..e9e540f1c1e7 100644 --- a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinCopyPasteUtils.kt +++ b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinCopyPasteUtils.kt @@ -3,6 +3,7 @@ package org.jetbrains.kotlin.idea.k2.codeinsight.copyPaste import com.intellij.openapi.util.TextRange import com.intellij.psi.util.parentsOfType +import org.jetbrains.kotlin.analysis.api.KaIdeApi import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.symbols.KaCallableSymbol import org.jetbrains.kotlin.analysis.api.symbols.KaSymbol @@ -31,8 +32,9 @@ internal fun Collection.toSortedStringSet(): Set = map { it.toStr * In the resulting map symbols that cannot be imported (e.g., local symbols) are associated with `null` key. */ context(KaSession) +@OptIn(KaIdeApi::class) internal fun KtReference.getResolvedSymbolsGroupedByImportableFqName(): Map> = resolveToImportableSymbols() - .groupBy { symbol -> symbol.getImportableName() } + .groupBy { symbol -> symbol.importableFqName } context(KaSession) private fun KtReference.resolveToImportableSymbols(): Collection = diff --git a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinReferenceRestoringHelper.kt b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinReferenceRestoringHelper.kt index 5e1540646e86..fbcc60f1973b 100644 --- a/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinReferenceRestoringHelper.kt +++ b/plugins/kotlin/code-insight/kotlin.code-insight.k2/src/org/jetbrains/kotlin/idea/k2/codeinsight/copyPaste/KotlinReferenceRestoringHelper.kt @@ -4,6 +4,7 @@ package org.jetbrains.kotlin.idea.k2.codeinsight.copyPaste import com.intellij.openapi.util.TextRange import com.intellij.psi.createSmartPointer import org.jetbrains.kotlin.analysis.api.KaAnalysisApiInternals +import org.jetbrains.kotlin.analysis.api.KaImplementationDetail import org.jetbrains.kotlin.analysis.api.KaSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.resolution.KaSymbolBasedReference @@ -30,6 +31,7 @@ import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment import kotlin.collections.flatMap internal object KotlinReferenceRestoringHelper { + @OptIn(KaImplementationDetail::class) fun collectSourceReferenceInfos(sourceFile: KtFile, startOffsets: IntArray, endOffsets: IntArray): List { var currentStartOffsetInPastedText = 0 diff --git a/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AnalysisUtils.kt b/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AnalysisUtils.kt index 56b2b72ade19..b00ea2c1cb73 100644 --- a/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AnalysisUtils.kt +++ b/plugins/kotlin/code-insight/utils/src/org/jetbrains/kotlin/idea/codeinsight/utils/AnalysisUtils.kt @@ -98,7 +98,7 @@ fun KtReference.resolveCompanionObjectShortReferenceToContainingClassSymbol(): K // class name reference resolves to companion if (expression.name == symbol.name?.asString()) return null - val containingSymbol = symbol.getContainingSymbol() as? KaNamedClassOrObjectSymbol + val containingSymbol = symbol.containingSymbol as? KaNamedClassOrObjectSymbol return containingSymbol?.takeIf { it.companionObject == symbol } } diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeInliner.kt b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeInliner.kt index ee4793ba3b05..cd2c626ce7a1 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeInliner.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeInliner.kt @@ -320,7 +320,7 @@ class CodeInliner( return Argument(expression, expression.getKtType(), isNamed = single.isNamed()) } val parameterType = parameter.getReturnKtType() - val elementType = parameterType.getArrayElementType() ?: return null + val elementType = parameterType.arrayElementType ?: return null val expression = psiFactory.buildExpression { appendFixedText(arrayOfFunctionName(elementType)) appendFixedText("(") diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/InlinePostProcessor.kt b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/InlinePostProcessor.kt index 913f77ceb4b6..ec4410bb6551 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/InlinePostProcessor.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/InlinePostProcessor.kt @@ -151,7 +151,7 @@ object InlinePostProcessor: AbstractInlinePostProcessor() { for ((argument, param) in arguments.asReversed()) { idx-- val defaultValue = param.symbol.defaultValue - ?: callableSymbol.getAllOverriddenSymbols() + ?: callableSymbol.allOverriddenSymbols .mapNotNull { val params = (it as? KtFunctionLikeSymbol)?.valueParameters params?.getOrNull(idx)?.defaultValue