KotlinIntroduceImportAliasHandler: remove unnecessary transformations
This commit is contained in:
+18
-18
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.idea.core.moveCaret
|
|||||||
import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils
|
import org.jetbrains.kotlin.idea.core.util.CodeInsightUtils
|
||||||
import org.jetbrains.kotlin.idea.imports.importableFqName
|
import org.jetbrains.kotlin.idea.imports.importableFqName
|
||||||
import org.jetbrains.kotlin.idea.refactoring.selectElement
|
import org.jetbrains.kotlin.idea.refactoring.selectElement
|
||||||
|
import org.jetbrains.kotlin.idea.references.KtReference
|
||||||
import org.jetbrains.kotlin.idea.references.findPsiDeclarations
|
import org.jetbrains.kotlin.idea.references.findPsiDeclarations
|
||||||
import org.jetbrains.kotlin.idea.references.mainReference
|
import org.jetbrains.kotlin.idea.references.mainReference
|
||||||
import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors
|
import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors
|
||||||
@@ -123,23 +124,22 @@ private fun invokeRename(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun replaceUsages(usages: List<UsageContext>, newName: String) {
|
private fun replaceUsages(usages: List<UsageContext>, newName: String) {
|
||||||
usages.filter { it.pointer.element?.safeAs<KtElement>()?.mainReference?.isImportUsage() == false }
|
// case: inner element
|
||||||
.reversed() // case: inner element
|
for (usage in usages.asReversed()) {
|
||||||
.forEach {
|
val reference = usage.pointer.element?.safeAs<KtElement>()?.mainReference?.takeUnless(KtReference::isImportUsage) ?: continue
|
||||||
val reference = it.pointer.element?.safeAs<KtElement>()?.mainReference ?: return@forEach
|
val newExpression = reference.handleElementRename(newName) as KtNameReferenceExpression
|
||||||
val newExpression = reference.handleElementRename(newName) as KtNameReferenceExpression
|
if (usage.isExtension) {
|
||||||
if (it.isExtension) {
|
newExpression.getQualifiedElementSelector()?.replace(newExpression)
|
||||||
newExpression.getQualifiedElementSelector()?.replace(newExpression)
|
continue
|
||||||
return@forEach
|
|
||||||
}
|
|
||||||
|
|
||||||
val qualifiedElement = newExpression.getQualifiedElement()
|
|
||||||
if (qualifiedElement != newExpression) {
|
|
||||||
val parent = newExpression.parent
|
|
||||||
if (parent is KtCallExpression || parent is KtUserType) {
|
|
||||||
newExpression.siblings(forward = false, withItself = false).forEach(PsiElement::delete)
|
|
||||||
qualifiedElement.replace(parent)
|
|
||||||
} else qualifiedElement.replace(newExpression)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val qualifiedElement = newExpression.getQualifiedElement()
|
||||||
|
if (qualifiedElement != newExpression) {
|
||||||
|
val parent = newExpression.parent
|
||||||
|
if (parent is KtCallExpression || parent is KtUserType) {
|
||||||
|
newExpression.siblings(forward = false, withItself = false).forEach(PsiElement::delete)
|
||||||
|
qualifiedElement.replace(parent)
|
||||||
|
} else qualifiedElement.replace(newExpression)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user