diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt index 1d5ee60760e..1d7cd9d489d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt @@ -59,6 +59,12 @@ abstract class RenameKotlinPsiProcessor : RenamePsiElementProcessor() { return references } + override fun getElementToSearchInStringsAndComments(element: PsiElement): PsiElement? { + val unwrapped = element?.unwrapped ?: return null + if ((unwrapped is KtDeclaration) && KtPsiUtil.isLocal(unwrapped as KtDeclaration)) return null + return element + } + override fun getQualifiedNameAfterRename(element: PsiElement, newName: String, nonJava: Boolean): String? { if (!nonJava) return newName diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.173 b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.173 index b0875034e34..6762cb24c90 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.173 +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/RenameKotlinPsiProcessor.kt.173 @@ -59,6 +59,12 @@ abstract class RenameKotlinPsiProcessor : RenamePsiElementProcessor() { return references } + override fun getElementToSearchInStringsAndComments(element: PsiElement?): PsiElement? { + val unwrapped = element?.unwrapped ?: return null + if ((unwrapped is KtDeclaration) && KtPsiUtil.isLocal(unwrapped as KtDeclaration)) return null + return element + } + override fun getQualifiedNameAfterRename(element: PsiElement, newName: String?, nonJava: Boolean): String? { if (!nonJava) return newName diff --git a/idea/testData/refactoring/rename/inplace/NoTextUsagesForLocalVar.kt b/idea/testData/refactoring/rename/inplace/NoTextUsagesForLocalVar.kt new file mode 100644 index 00000000000..86da3f6b630 --- /dev/null +++ b/idea/testData/refactoring/rename/inplace/NoTextUsagesForLocalVar.kt @@ -0,0 +1,6 @@ +fun foo(x: Int) { + val y = x + 1 + val z = y + 1 + // y + val s = "y" +} \ No newline at end of file diff --git a/idea/testData/refactoring/rename/inplace/NoTextUsagesForLocalVar.kt.after b/idea/testData/refactoring/rename/inplace/NoTextUsagesForLocalVar.kt.after new file mode 100644 index 00000000000..bcf70775d56 --- /dev/null +++ b/idea/testData/refactoring/rename/inplace/NoTextUsagesForLocalVar.kt.after @@ -0,0 +1,6 @@ +fun foo(x: Int) { + val w = x + 1 + val z = w + 1 + // y + val s = "y" +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt index 6f446b69947..1889d56fdd3 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/InplaceRenameTest.kt @@ -174,6 +174,10 @@ class InplaceRenameTest : LightPlatformCodeInsightTestCase() { doTestMemberInplaceRename("`object`") } + fun testNoTextUsagesForLocalVar() { + doTestMemberInplaceRename("w") + } + private fun doTestImplicitLambdaParameter(newName: String) { configureByFile(getTestName(false) + ".kt")