Move: Add import for top-level declarations moved to the default package

#KT-22661 Fixed
This commit is contained in:
Alexey Sedunov
2018-02-16 20:19:16 +03:00
parent 96132a686a
commit e63e48933d
4 changed files with 15 additions and 4 deletions
@@ -22,6 +22,7 @@ import com.intellij.psi.PsiElement
import com.intellij.psi.util.PsiTreeUtil
import com.intellij.util.IncorrectOperationException
import com.intellij.util.SmartList
import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
@@ -201,6 +202,12 @@ class KtSimpleNameReference(expression: KtSimpleNameExpression) : KtSimpleRefere
}
}
val targetUnwrapped = targetElement?.unwrapped
if (targetUnwrapped != null && targetUnwrapped.isTopLevelKtOrJavaMember() && fqName.isOneSegmentFQN()) {
addDelayedImportRequest(targetUnwrapped, containingKtFile)
}
var parentDelimiter = "."
val fqNameBase = when {
parent is KtCallElement -> {
@@ -215,8 +222,8 @@ class KtSimpleNameReference(expression: KtSimpleNameExpression) : KtSimpleRefere
.callableReference
.replace(psiFactory.createSimpleName(shortName))
.parent as KtCallableReferenceExpression
if (targetElement != null && targetElement.isTopLevelKtOrJavaMember()) {
addDelayedImportRequest(targetElement, parent.containingKtFile)
if (targetUnwrapped != null && targetUnwrapped.isTopLevelKtOrJavaMember()) {
addDelayedImportRequest(targetUnwrapped, parent.containingKtFile)
return parent.replaced(newCallableRef).callableReference as KtNameReferenceExpression
}
newCallableRef.text
@@ -1,5 +1,7 @@
package a
import Y
class X: Y() {
fun main() {
Y().foo()
@@ -1,5 +1,7 @@
package a
class Y {
import X
class Y(x: X) {
}
@@ -4,6 +4,6 @@ class <caret>X {
}
class Y {
class Y(x: X) {
}