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.imports.importableFqName
|
||||
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.mainReference
|
||||
import org.jetbrains.kotlin.idea.references.resolveMainReferenceToDescriptors
|
||||
@@ -123,23 +124,22 @@ private fun invokeRename(
|
||||
}
|
||||
|
||||
private fun replaceUsages(usages: List<UsageContext>, newName: String) {
|
||||
usages.filter { it.pointer.element?.safeAs<KtElement>()?.mainReference?.isImportUsage() == false }
|
||||
.reversed() // case: inner element
|
||||
.forEach {
|
||||
val reference = it.pointer.element?.safeAs<KtElement>()?.mainReference ?: return@forEach
|
||||
val newExpression = reference.handleElementRename(newName) as KtNameReferenceExpression
|
||||
if (it.isExtension) {
|
||||
newExpression.getQualifiedElementSelector()?.replace(newExpression)
|
||||
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)
|
||||
}
|
||||
// case: inner element
|
||||
for (usage in usages.asReversed()) {
|
||||
val reference = usage.pointer.element?.safeAs<KtElement>()?.mainReference?.takeUnless(KtReference::isImportUsage) ?: continue
|
||||
val newExpression = reference.handleElementRename(newName) as KtNameReferenceExpression
|
||||
if (usage.isExtension) {
|
||||
newExpression.getQualifiedElementSelector()?.replace(newExpression)
|
||||
continue
|
||||
}
|
||||
|
||||
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