Rename: Fixed rename of Java getters/setters through synthetic property references in Kotlin

#KT-8817 Fixed
This commit is contained in:
Alexey Sedunov
2016-04-19 19:01:04 +03:00
parent a45165838a
commit cc5c3c2353
27 changed files with 311 additions and 6 deletions
@@ -51,6 +51,12 @@ sealed class SyntheticPropertyAccessorReference(expression: KtNameReferenceExpre
override fun canRename() = true
fun renameByPropertyName(newName: String): PsiElement? {
val nameIdentifier = KtPsiFactory(expression).createNameIdentifier(newName)
expression.getReferencedNameElement().replace(nameIdentifier)
return expression
}
override fun handleElementRename(newElementName: String?): PsiElement? {
if (!Name.isValidIdentifier(newElementName!!)) return expression
@@ -65,9 +71,7 @@ sealed class SyntheticPropertyAccessorReference(expression: KtNameReferenceExpre
}
if (newName == null) return expression //TODO: handle the case when get/set becomes ordinary method
val nameIdentifier = KtPsiFactory(expression).createNameIdentifier(newName.identifier)
expression.getReferencedNameElement().replace(nameIdentifier)
return expression
return renameByPropertyName(newName.identifier)
}
class Getter(expression: KtNameReferenceExpression) : SyntheticPropertyAccessorReference(expression, true)