From 652a953e11da022f0cef8e58f41e3535ca2d6eb0 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Tue, 25 Mar 2025 19:32:30 +0100 Subject: [PATCH] [kotlin] k2 change signature: replace expressions of the same type to avoid broken psi ^KTIJ-33366 fixed GitOrigin-RevId: a897e309e9394c3e52938d3b2f6956bf67020968 --- .../k2/intentions/tests/K2IntentionTestGenerated.java | 5 +++++ .../kotlin/idea/intentions/K1IntentionTestGenerated.java | 5 +++++ .../convertParameterToReceiver/simplifiedQualifier.kt | 8 ++++++++ .../simplifiedQualifier.kt.after | 8 ++++++++ .../changeSignature/usages/KotlinParameterUsage.kt | 4 ++++ 5 files changed, 30 insertions(+) create mode 100644 plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt create mode 100644 plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt.after diff --git a/plugins/kotlin/code-insight/intentions-k2/tests/test/org/jetbrains/kotlin/idea/k2/intentions/tests/K2IntentionTestGenerated.java b/plugins/kotlin/code-insight/intentions-k2/tests/test/org/jetbrains/kotlin/idea/k2/intentions/tests/K2IntentionTestGenerated.java index cc484d188a1d..e1765e28d143 100644 --- a/plugins/kotlin/code-insight/intentions-k2/tests/test/org/jetbrains/kotlin/idea/k2/intentions/tests/K2IntentionTestGenerated.java +++ b/plugins/kotlin/code-insight/intentions-k2/tests/test/org/jetbrains/kotlin/idea/k2/intentions/tests/K2IntentionTestGenerated.java @@ -12481,6 +12481,11 @@ public abstract class K2IntentionTestGenerated extends AbstractK2IntentionTest { runTest("../../../idea/tests/testData/intentions/convertParameterToReceiver/recursiveCall1.kt"); } + @TestMetadata("simplifiedQualifier.kt") + public void testSimplifiedQualifier() throws Exception { + runTest("../../../idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt"); + } + @TestMetadata("topLevelFun.kt") public void testTopLevelFun() throws Exception { runTest("../../../idea/tests/testData/intentions/convertParameterToReceiver/topLevelFun.kt"); diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/intentions/K1IntentionTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/intentions/K1IntentionTestGenerated.java index ce4e02de80d8..1758e5adbf46 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/intentions/K1IntentionTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/intentions/K1IntentionTestGenerated.java @@ -7305,6 +7305,11 @@ public abstract class K1IntentionTestGenerated extends AbstractK1IntentionTest { runTest("testData/intentions/convertParameterToReceiver/recursiveCall1.kt"); } + @TestMetadata("simplifiedQualifier.kt") + public void testSimplifiedQualifier() throws Exception { + runTest("testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt"); + } + @TestMetadata("topLevelFun.kt") public void testTopLevelFun() throws Exception { runTest("testData/intentions/convertParameterToReceiver/topLevelFun.kt"); diff --git a/plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt b/plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt new file mode 100644 index 000000000000..4f307ea80289 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt @@ -0,0 +1,8 @@ +// WITH_STDLIB +class A { + fun foo3() = 42 + + fun test(a: String) { + foo3() + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt.after b/plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt.after new file mode 100644 index 000000000000..90faa9f788cc --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/intentions/convertParameterToReceiver/simplifiedQualifier.kt.after @@ -0,0 +1,8 @@ +// WITH_STDLIB +class A { + fun foo3() = 42 + + fun String.test() { + foo3() + } +} \ No newline at end of file diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/changeSignature/usages/KotlinParameterUsage.kt b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/changeSignature/usages/KotlinParameterUsage.kt index 523f56f23427..9e24254b117c 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/changeSignature/usages/KotlinParameterUsage.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.k2/src/org/jetbrains/kotlin/idea/k2/refactoring/changeSignature/usages/KotlinParameterUsage.kt @@ -78,6 +78,10 @@ internal class KotlinImplicitThisUsage( element: KtElement, allUsages: Array ): KtElement { + val parent = element.parent + if (parent is KtCallExpression) { + return processUsage(changeInfo, parent, allUsages) + } val newQualifiedCall = KtPsiFactory(element.project).createExpression("$newReceiver.${element.text}" ) as KtQualifiedExpression return element.replace(newQualifiedCall).parent as KtElement