diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt index 4788bda1b7a..c566062bd55 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt @@ -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, newName: String) { - usages.filter { it.pointer.element?.safeAs()?.mainReference?.isImportUsage() == false } - .reversed() // case: inner element - .forEach { - val reference = it.pointer.element?.safeAs()?.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()?.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) + } + } } \ No newline at end of file