Skip to content

Commit e63e489

Browse files
committed
Move: Add import for top-level declarations moved to the default package
#KT-22661 Fixed
1 parent 96132a6 commit e63e489

File tree

4 files changed

+15
-4
lines changed
  • idea
    • idea-analysis/src/org/jetbrains/kotlin/idea/references
    • testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc
      • moveClassFromDefaultPackage/after/a
      • moveClassToDefaultPackage

4 files changed

+15
-4
lines changed

idea/idea-analysis/src/org/jetbrains/kotlin/idea/references/KtSimpleNameReference.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.intellij.psi.PsiElement
2222
import com.intellij.psi.util.PsiTreeUtil
2323
import com.intellij.util.IncorrectOperationException
2424
import com.intellij.util.SmartList
25+
import org.jetbrains.kotlin.asJava.unwrapped
2526
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
2627
import org.jetbrains.kotlin.idea.caches.resolve.analyze
2728
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
@@ -201,6 +202,12 @@ class KtSimpleNameReference(expression: KtSimpleNameExpression) : KtSimpleRefere
201202
}
202203
}
203204

205+
val targetUnwrapped = targetElement?.unwrapped
206+
207+
if (targetUnwrapped != null && targetUnwrapped.isTopLevelKtOrJavaMember() && fqName.isOneSegmentFQN()) {
208+
addDelayedImportRequest(targetUnwrapped, containingKtFile)
209+
}
210+
204211
var parentDelimiter = "."
205212
val fqNameBase = when {
206213
parent is KtCallElement -> {
@@ -215,8 +222,8 @@ class KtSimpleNameReference(expression: KtSimpleNameExpression) : KtSimpleRefere
215222
.callableReference
216223
.replace(psiFactory.createSimpleName(shortName))
217224
.parent as KtCallableReferenceExpression
218-
if (targetElement != null && targetElement.isTopLevelKtOrJavaMember()) {
219-
addDelayedImportRequest(targetElement, parent.containingKtFile)
225+
if (targetUnwrapped != null && targetUnwrapped.isTopLevelKtOrJavaMember()) {
226+
addDelayedImportRequest(targetUnwrapped, parent.containingKtFile)
220227
return parent.replaced(newCallableRef).callableReference as KtNameReferenceExpression
221228
}
222229
newCallableRef.text

idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveClassFromDefaultPackage/after/a/X.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package a
22

3+
import Y
4+
35
class X: Y() {
46
fun main() {
57
Y().foo()
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package a
22

3-
class Y {
3+
import X
4+
5+
class Y(x: X) {
46

57
}

idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/misc/moveClassToDefaultPackage/before/a/main.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ class <caret>X {
44

55
}
66

7-
class Y {
7+
class Y(x: X) {
88

99
}

0 commit comments

Comments
 (0)