From c2ebab1d86159c7c0165052c3e335b66c2568d59 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 26 May 2021 15:02:30 +0200 Subject: [PATCH] kotlin: automatic rename: do not suggest constant names for companion object properties GitOrigin-RevId: 4ecf3493a55127f7b7a224f6c1fd93010e737419 --- .../idea/refactoring/rename/AutomaticVariableRenamer.kt | 7 +++++-- .../rename/renameClassWithAutoVarConventions/after/test.kt | 4 +++- .../renameClassWithAutoVarConventions/before/test.kt | 4 +++- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt index c711760a242a..f815f30f88f6 100644 --- a/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt +++ b/plugins/kotlin/idea/src/org/jetbrains/kotlin/idea/refactoring/rename/AutomaticVariableRenamer.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.idea.core.unquote import org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringSettings import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.resolve.DescriptorUtils import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.lazy.NoDescriptorForDeclarationException @@ -51,8 +52,7 @@ class AutomaticVariableRenamer( KtParameter::class.java ) as KtCallableDeclaration? ?: continue - if (parameterOrVariable.name == null) continue - val variableName = parameterOrVariable.name!! + val variableName = parameterOrVariable.name ?: continue if (variableName.equals(newClassNameUnquoted, ignoreCase = true)) continue if (!StringUtil.containsIgnoreCase(variableName, oldClassName)) continue @@ -120,6 +120,9 @@ class AutomaticVariableRenamer( if (ktElement is KtProperty && ktElement.isTopLevel && !ktElement.hasModifier(KtTokens.CONST_KEYWORD)) { return null } + if (ktElement.containingClassOrObject is KtObjectDeclaration) { + return null + } val psiVariable = ktElement.toLightElements().firstIsInstanceOrNull() return if (psiVariable != null) codeStyleManager.getVariableKind(psiVariable) else null } diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/after/test.kt b/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/after/test.kt index 1629a211b1fc..ba137a3ffc33 100644 --- a/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/after/test.kt +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/after/test.kt @@ -1,7 +1,9 @@ package test class Bar { - + companion object { + val barKlass: Class = Bar::class.java + } } val SOME_Bar: Bar = Bar() diff --git a/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/before/test.kt b/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/before/test.kt index f84f83d1d0cf..4909bf47395e 100644 --- a/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/before/test.kt +++ b/plugins/kotlin/idea/tests/testData/refactoring/rename/renameClassWithAutoVarConventions/before/test.kt @@ -1,7 +1,9 @@ package test class Foo { - + companion object { + val fooKlass: Class = Foo::class.java + } } val SOME_FOO: Foo = Foo()