From f7fd73abe1038a4776db86583d7ffa67c6fb2ba6 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 26 Sep 2024 14:05:29 +0200 Subject: [PATCH] [kotlin] k2 deprecation fix: don't insert comments from origin function body ^KTIJ-31410 fixed GitOrigin-RevId: 56342b8657bdbef21b64e4089a254a6f162e3fee --- .../fixes/replaceWith/DeprecatedSymbolUsageFixBase.kt | 5 ++++- .../argumentSideEffects/complexExpressionNotUsed1.kt | 1 + .../complexExpressionNotUsed1.kt.after | 1 + .../inline/codeInliner/AbstractCodeToInlineBuilder.kt | 2 +- .../inline/codeInliner/CodeToInlineBuilder.kt | 9 +++------ 5 files changed, 10 insertions(+), 8 deletions(-) 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 0de35e72496f..d8e54fde80d7 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 @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.idea.k2.refactoring.inline.codeInliner.ClassUsageRep import org.jetbrains.kotlin.idea.k2.refactoring.inline.codeInliner.CodeToInlineBuilder import org.jetbrains.kotlin.idea.quickfix.replaceWith.ReplaceWithData import org.jetbrains.kotlin.idea.refactoring.inline.codeInliner.CodeToInline +import org.jetbrains.kotlin.idea.refactoring.inline.codeInliner.MutableCodeToInline import org.jetbrains.kotlin.idea.refactoring.inline.codeInliner.UsageReplacementStrategy import org.jetbrains.kotlin.idea.refactoring.inline.codeInliner.buildCodeToInline import org.jetbrains.kotlin.idea.references.mainReference @@ -175,7 +176,9 @@ abstract class DeprecatedSymbolUsageFixBase( val expression = psiFactory.createExpressionCodeFragment(replaceWith.pattern, context).getContentElement() ?: return null - return buildCodeToInline(target, expression, false, null, CodeToInlineBuilder(original = target)) + return buildCodeToInline(target, expression, false, null, object : CodeToInlineBuilder(original = target) { + override fun saveComments(codeToInline: MutableCodeToInline, contextDeclaration: KtDeclaration) {} + }) } } } diff --git a/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt b/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt index b097af58d3ef..c5c25c362000 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt +++ b/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt @@ -2,6 +2,7 @@ @Deprecated("", ReplaceWith("newFun()")) fun oldFun(p: Int) { + /** some comments */ newFun() } diff --git a/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt.after b/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt.after index 986ed39ada5f..c539b478a394 100644 --- a/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt.after +++ b/plugins/kotlin/idea/tests/testData/quickfix/deprecatedSymbolUsage/argumentSideEffects/complexExpressionNotUsed1.kt.after @@ -2,6 +2,7 @@ @Deprecated("", ReplaceWith("newFun()")) fun oldFun(p: Int) { + /** some comments */ newFun() } diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/inline/codeInliner/AbstractCodeToInlineBuilder.kt b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/inline/codeInliner/AbstractCodeToInlineBuilder.kt index c8e844ea1409..a3ef0a28a9c1 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/inline/codeInliner/AbstractCodeToInlineBuilder.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/inline/codeInliner/AbstractCodeToInlineBuilder.kt @@ -13,7 +13,7 @@ abstract class AbstractCodeToInlineBuilder( protected val fallbackToSuperCall: Boolean = false, ) { protected val psiFactory = KtPsiFactory(project) - protected fun saveComments(codeToInline: MutableCodeToInline, contextDeclaration: KtDeclaration) { + protected open fun saveComments(codeToInline: MutableCodeToInline, contextDeclaration: KtDeclaration) { val bodyBlockExpression = contextDeclaration.safeAs()?.bodyBlockExpression if (bodyBlockExpression != null) addCommentHoldersForStatements(codeToInline, bodyBlockExpression) } diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeToInlineBuilder.kt b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeToInlineBuilder.kt index de98a8578254..fa227265a784 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeToInlineBuilder.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/inline/codeInliner/CodeToInlineBuilder.kt @@ -13,7 +13,7 @@ import org.jetbrains.kotlin.idea.refactoring.inline.codeInliner.AbstractCodeToIn import org.jetbrains.kotlin.idea.refactoring.inline.codeInliner.MutableCodeToInline import org.jetbrains.kotlin.psi.* -class CodeToInlineBuilder( +open class CodeToInlineBuilder( private val original: KtDeclaration, fallbackToSuperCall: Boolean = false ) : AbstractCodeToInlineBuilder(original.project, original, fallbackToSuperCall) { @@ -33,17 +33,14 @@ class CodeToInlineBuilder( val codeToInline = MutableCodeToInline( mainExpression, - originalDeclaration, + original, statementsBefore.toMutableList(), mutableSetOf(), alwaysKeepMainExpression, extraComments = null, ) - if (originalDeclaration != null) { - saveComments(codeToInline, originalDeclaration!!) - } - + saveComments(codeToInline, original) insertExplicitTypeArguments(codeToInline) removeContracts(codeToInline) encodeInternalReferences(codeToInline, original)