Rename: Allow deleting name of companion object
#KT-20178 Fixed
This commit is contained in:
+16
-4
@@ -28,10 +28,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.addDelayedImportRequest
|
||||
import org.jetbrains.kotlin.idea.codeInsight.shorten.addToShorteningWaitSet
|
||||
import org.jetbrains.kotlin.idea.core.ShortenReferences
|
||||
import org.jetbrains.kotlin.idea.core.copied
|
||||
import org.jetbrains.kotlin.idea.core.quoteIfNeeded
|
||||
import org.jetbrains.kotlin.idea.core.replaced
|
||||
import org.jetbrains.kotlin.idea.core.*
|
||||
import org.jetbrains.kotlin.idea.intentions.OperatorToFunctionIntention
|
||||
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
|
||||
import org.jetbrains.kotlin.lexer.KtToken
|
||||
@@ -39,6 +36,7 @@ import org.jetbrains.kotlin.lexer.KtTokens
|
||||
import org.jetbrains.kotlin.load.java.descriptors.JavaPropertyDescriptor
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
import org.jetbrains.kotlin.name.SpecialNames
|
||||
import org.jetbrains.kotlin.name.isOneSegmentFQN
|
||||
import org.jetbrains.kotlin.plugin.references.SimpleNameReferenceExtension
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
@@ -108,6 +106,20 @@ class KtSimpleNameReference(expression: KtSimpleNameExpression) : KtSimpleRefere
|
||||
if (!canRename()) throw IncorrectOperationException()
|
||||
if (newElementName == null) return expression
|
||||
|
||||
if (newElementName.unquote() == "") {
|
||||
val qualifiedElement = expression.getQualifiedElement()
|
||||
return when (qualifiedElement) {
|
||||
is KtQualifiedExpression -> {
|
||||
expression.replace(qualifiedElement.receiverExpression)
|
||||
qualifiedElement.replaced(qualifiedElement.selectorExpression!!)
|
||||
}
|
||||
is KtUserType -> {
|
||||
expression.replaced(KtPsiFactory(expression).createSimpleName(SpecialNames.DEFAULT_NAME_FOR_COMPANION_OBJECT.asString()))
|
||||
}
|
||||
else -> expression
|
||||
}
|
||||
}
|
||||
|
||||
// Do not rename if the reference corresponds to synthesized component function
|
||||
val expressionText = expression.text
|
||||
if (expressionText != null && Name.isValidIdentifier(expressionText)) {
|
||||
|
||||
Reference in New Issue
Block a user