diff --git a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java index c28575fdb999..f8cddbb3db9d 100644 --- a/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java +++ b/plugins/kotlin/idea/tests/test/org/jetbrains/kotlin/idea/refactoring/rename/RenameTestGenerated.java @@ -230,6 +230,11 @@ public class RenameTestGenerated extends AbstractRenameTest { runTest("testData/refactoring/rename/dataClassPropertyWithJava/dataClassPropertyWithJava.test"); } + @TestMetadata("dataClassValuePropertyWithJava/dataClassPropertyWithJava.test") + public void testDataClassValuePropertyWithJava_DataClassPropertyWithJava() throws Exception { + runTest("testData/refactoring/rename/dataClassValuePropertyWithJava/dataClassPropertyWithJava.test"); + } + @TestMetadata("enumGetEntriesFromJava/enumValueOf.test") public void testEnumGetEntriesFromJava_EnumValueOf() throws Exception { runTest("testData/refactoring/rename/enumGetEntriesFromJava/enumValueOf.test"); diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/after/JavaClass.java b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/after/JavaClass.java new file mode 100644 index 000000000000..7cbb411f2b2d --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/after/JavaClass.java @@ -0,0 +1,5 @@ +class JavaClass { + void test() { + var a = new XYZ(1).getP1(); + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/after/test.kt b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/after/test.kt new file mode 100644 index 000000000000..a673bcda0628 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/after/test.kt @@ -0,0 +1,8 @@ +data class XYZ(val p1: Int, val y: Int) { + operator fun component1(): Int = p1 +} + +fun test(xyz: XYZ) { + val (a, b) = xyz + val c = a + b +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/before/JavaClass.java b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/before/JavaClass.java new file mode 100644 index 000000000000..de996e91d106 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/before/JavaClass.java @@ -0,0 +1,5 @@ +class JavaClass { + void test() { + var a = new XYZ(1).getValue(); + } +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/before/test.kt b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/before/test.kt new file mode 100644 index 000000000000..0ccab22982e0 --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/before/test.kt @@ -0,0 +1,8 @@ +data class XYZ(val /*rename*/value: Int, val y: Int) { + operator fun component1(): Int = value +} + +fun test(xyz: XYZ) { + val (a, b) = xyz + val c = a + b +} \ No newline at end of file diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/dataClassPropertyWithJava.test b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/dataClassPropertyWithJava.test new file mode 100644 index 000000000000..ee7a7709d2cd --- /dev/null +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/dataClassPropertyWithJava.test @@ -0,0 +1,7 @@ +{ + "type": "AUTO_DETECT", + "mainFile": "test.kt", + "newName": "p1", + "withRuntime": "true", + "enabledInK2": true +} \ No newline at end of file diff --git a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt index e08fbc006bb0..217aeba12364 100644 --- a/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt +++ b/plugins/kotlin/refactorings/kotlin.refactorings.common/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt @@ -67,18 +67,20 @@ abstract class RenameKotlinPsiProcessor : RenamePsiElementProcessor() { searchParameters: KotlinReferencesSearchParameters ): Collection { val references = ReferencesSearch.search(searchParameters).asIterable().toMutableSet() - if (element is KtNamedFunction || (element is KtProperty && !element.isLocal) || (element is KtParameter && element.hasValOrVar())) { + if (element is KtNamedFunction || (element is KtProperty && !element.isLocal)) { + // property accessors for parameters should be covered by KotlinReferencesSearcher.QueryProcessor.searchMethodAware element.toLightMethods().flatMapTo(references) { method -> - if (element is KtParameter && DataClassResolver.isComponentLike(method.name)) { - // renaming a data class property doesn't change the synthetic component name - return@flatMapTo emptyList() - } MethodReferencesSearch.search( + // ReferenceSearch, called MethodUsagesSearcher#processQuery would still start operator conventions search + // because kotlinOptions are lost during the call KotlinMethodReferencesSearchParameters( method, kotlinOptions = KotlinReferencesSearchOptions( - acceptImportAlias = false - ) + acceptImportAlias = false, + searchForComponentConventions = false, + searchForOperatorConventions = false, + ), + scope = searchParameters.effectiveSearchScope, ) ).asIterable() } diff --git a/plugins/kotlin/refactorings/rename.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/rename/FirRenameTestGenerated.java b/plugins/kotlin/refactorings/rename.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/rename/FirRenameTestGenerated.java index af7ba5ca8a2f..5190cf21ba03 100644 --- a/plugins/kotlin/refactorings/rename.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/rename/FirRenameTestGenerated.java +++ b/plugins/kotlin/refactorings/rename.k2/test/org/jetbrains/kotlin/idea/k2/refactoring/rename/FirRenameTestGenerated.java @@ -230,6 +230,11 @@ public class FirRenameTestGenerated extends AbstractFirRenameTest { runTest("../../idea/tests/testData/refactoring/rename/dataClassPropertyWithJava/dataClassPropertyWithJava.test"); } + @TestMetadata("dataClassValuePropertyWithJava/dataClassPropertyWithJava.test") + public void testDataClassValuePropertyWithJava_DataClassPropertyWithJava() throws Exception { + runTest("../../idea/tests/testData/refactoring/rename/dataClassValuePropertyWithJava/dataClassPropertyWithJava.test"); + } + @TestMetadata("enumGetEntriesFromJava/enumValueOf.test") public void testEnumGetEntriesFromJava_EnumValueOf() throws Exception { runTest("../../idea/tests/testData/refactoring/rename/enumGetEntriesFromJava/enumValueOf.test");