diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt index c790493c767..cf5d07736c0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveUtils.kt @@ -163,8 +163,19 @@ public fun JetNamedDeclaration.getFileNameAfterMove(): String? { } // returns true if successful -private fun updateJavaReference(reference: PsiReferenceExpression, newElement: PsiElement): Boolean { - if (newElement is PsiMember) { +private fun updateJavaReference(reference: PsiReferenceExpression, oldElement: PsiElement, newElement: PsiElement): Boolean { + if (oldElement is PsiMember && newElement is PsiMember) { + // Remove import of old package facade, if any + val oldClassName = oldElement.getContainingClass()?.getQualifiedName() + if (oldClassName != null) { + val importOfOldClass = (reference.getContainingFile() as? PsiJavaFile)?.getImportList()?.getImportStatements()?.firstOrNull { + it.getQualifiedName() == oldClassName + } + if (importOfOldClass != null && importOfOldClass.resolve() == null) { + importOfOldClass.delete() + } + } + val newClass = newElement.getContainingClass() if (newClass != null && reference.getQualifierExpression() != null) { val mockMoveMembersOptions = MockMoveMembersOptions(newClass.getQualifiedName(), array(newElement)) @@ -231,7 +242,7 @@ fun postProcessMoveUsages(usages: List, if (it is JetSimpleNameReference) { it.bindToElement(newElement, shorteningMode) } - else if (it is PsiReferenceExpression && updateJavaReference(it, newElement)) { + else if (it is PsiReferenceExpression && updateJavaReference(it, oldElement, newElement)) { } else { it.bindToElement(newElement) diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/after/JavaUsage.java b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/after/JavaUsage.java index 8ad4d9dfde1..8865366fa0c 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/after/JavaUsage.java +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/after/JavaUsage.java @@ -1,6 +1,4 @@ -// TODO Import of old package stays here because of a bug import newPackage.NewPackagePackage; -import oldPackage.OldPackagePackage; class JavaUsage { public static void main(String[] args) { diff --git a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/before/JavaUsage.java b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/before/JavaUsage.java index 39b49501f2d..f4507dfc8d8 100644 --- a/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/before/JavaUsage.java +++ b/idea/testData/refactoring/move/kotlin/moveTopLevelDeclarations/moveOnlyFunctionToPackageUsedInJava/before/JavaUsage.java @@ -1,4 +1,3 @@ -// TODO Import of old package stays here because of a bug import oldPackage.OldPackagePackage; class JavaUsage {