From 6e12fe3a7883f9f6a3b65d350386dfcb556fbf8d Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Fri, 16 Sep 2016 18:03:15 +0300 Subject: [PATCH] Fix parameter changing in refactorings Do not try to create new identifier if inherited name is invalid, e.g. it's a destructuring declaration. See KotlinChangeSignatureTest.testSAMRenameParam --- .../usages/KotlinCallableDefinitionUsage.kt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt index 1376077f2d3..1c3128d8492 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/changeSignature/usages/KotlinCallableDefinitionUsage.kt @@ -36,6 +36,7 @@ import org.jetbrains.kotlin.idea.refactoring.dropOverrideKeywordIfNecessary import org.jetbrains.kotlin.idea.refactoring.replaceListPsiAndKeepDelimiters import org.jetbrains.kotlin.idea.core.ShortenReferences import org.jetbrains.kotlin.idea.core.ShortenReferences.Options +import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.getElementTextWithContext import org.jetbrains.kotlin.psi.psiUtil.getValueParameterList @@ -260,7 +261,11 @@ class KotlinCallableDefinitionUsage( parameter.setTypeReference(psiFactory.createType(renderedType)) } - val newIdentifier = psiFactory.createIdentifier(parameterInfo.getInheritedName(this)) - parameter.nameIdentifier?.replace(newIdentifier) + + val inheritedName = parameterInfo.getInheritedName(this) + if (Name.isValidIdentifier(inheritedName)) { + val newIdentifier = psiFactory.createIdentifier(inheritedName) + parameter.nameIdentifier?.replace(newIdentifier) + } } }