Skip to content

Commit b45aeda

Browse files
committed
Fix caret after "Introduce import alias" if invoke in import directive
#KT-30833 Fixed
1 parent 814aca9 commit b45aeda

File tree

7 files changed

+32
-6
lines changed

7 files changed

+32
-6
lines changed

idea/src/org/jetbrains/kotlin/idea/refactoring/introduce/introduceImportAlias/KotlinIntroduceImportAliasHandler.kt

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.analyze
2222
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
2323
import org.jetbrains.kotlin.idea.codeInsight.CodeInsightUtils
2424
import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
25+
import org.jetbrains.kotlin.idea.core.moveCaret
2526
import org.jetbrains.kotlin.idea.imports.importableFqName
2627
import org.jetbrains.kotlin.idea.refactoring.selectElement
2728
import org.jetbrains.kotlin.idea.references.KtSimpleNameReference
@@ -44,9 +45,7 @@ import org.jetbrains.kotlin.psi.KtCallExpression
4445
import org.jetbrains.kotlin.psi.KtFile
4546
import org.jetbrains.kotlin.psi.KtNameReferenceExpression
4647
import org.jetbrains.kotlin.psi.KtUserType
47-
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElement
48-
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
49-
import org.jetbrains.kotlin.psi.psiUtil.siblings
48+
import org.jetbrains.kotlin.psi.psiUtil.*
5049
import org.jetbrains.kotlin.resolve.PropertyImportedFromObject
5150
import org.jetbrains.kotlin.resolve.descriptorUtil.isExtension
5251
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
@@ -74,6 +73,8 @@ object KotlinIntroduceImportAliasHandler : RefactoringActionHandler {
7473
}
7574
}
7675

76+
val elementInImportDirective = element.isInImportDirective()
77+
7778
val oldName = element.mainReference.value
7879
val scopes = usages.mapNotNull {
7980
val expression = it.reference.element
@@ -99,6 +100,8 @@ object KotlinIntroduceImportAliasHandler : RefactoringActionHandler {
99100
replaceUsages(usages, newName)
100101
cleanImport(file, fqName)
101102

103+
if (elementInImportDirective) editor.moveCaret(newDirective.alias?.nameIdentifier?.textOffset ?: newDirective.endOffset)
104+
102105
if (!ApplicationManager.getApplication().isUnitTestMode) {
103106
invokeRename(project, editor, newDirective.alias, suggestionsName)
104107
}

idea/testData/intentions/introduceImportAlias/alreadyImportAlias.kt.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@ class Outer {
99

1010
class Test() {
1111
fun test() {
12-
val i = Middle1.Inner()
12+
val i = Middle<caret>1.Inner()
1313
}
1414
}

idea/testData/intentions/introduceImportAlias/conflictLocalName.kt.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,6 @@ class Outer {
1313
class Test() {
1414
fun test() {
1515
val foo = 1
16-
foo1()
16+
foo<caret>1()
1717
}
1818
}

idea/testData/intentions/introduceImportAlias/function.kt.after

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class Outer {
1414

1515
class Test() {
1616
fun test() {
17-
val i = foo1()
17+
val i = foo<caret>1()
1818
}
1919

2020
fun test2() {
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package test
2+
3+
import test.Foo<caret>
4+
5+
class Foo
6+
7+
fun main() {
8+
Foo()
9+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package test
2+
3+
import test.Foo as <caret>Foo1
4+
5+
class Foo
6+
7+
fun main() {
8+
Foo1()
9+
}

idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)