[java] Remove on-demand imports referring to old package name after package rename (IDEA-171422)

GitOrigin-RevId: c54007736ce960ad874f82819e88519766d92a0a
This commit is contained in:
Bas Leijdekkers
2024-03-03 13:15:50 +01:00
committed by intellij-monorepo-bot
parent 64cc3f50f4
commit fb03f800df
8 changed files with 50 additions and 45 deletions

View File

@@ -1,4 +1,4 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.refactoring.move.moveClassesOrPackages;
import com.intellij.codeInsight.ChangeContextUtil;
@@ -89,7 +89,7 @@ public class JavaMoveDirectoryWithClassesHelper extends MoveDirectoryWithClasses
private static boolean isUnderRefactoring(PsiElement psiElement, PsiDirectory[] directoriesToMove) {
for (PsiDirectory directory : directoriesToMove) {
if (PsiTreeUtil.isAncestor(directory, psiElement, true)) {
if (PsiTreeUtil.isAncestor(directory, psiElement, false)) {
return true;
}
}

View File

@@ -0,0 +1,7 @@
package a.b;
import x.y.K;
public class J {
K k = new K();
}

View File

@@ -0,0 +1,3 @@
package c;
public class L {}

View File

@@ -0,0 +1,4 @@
package x.y;
public class K {
}

View File

@@ -0,0 +1,7 @@
package a.b;
import c.d.*;
public class J {
K k = new K();
}

View File

@@ -0,0 +1,3 @@
package c;
public class L {}

View File

@@ -0,0 +1,4 @@
package c.d;
public class K {
}

View File

@@ -1,18 +1,4 @@
/*
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.java.refactoring;
import com.intellij.JavaTestUtil;
@@ -50,47 +36,38 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase {
}
public void testMovePackage() {
doTest(createAction("pack1", "target"));
doTest(createMoveAction("pack1", "target"));
}
public void testRenamePackage() {
final PerformAction action = (rootDir, rootAfter) -> {
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject);
final PsiPackage sourcePackage = psiFacade.findPackage("pack1");
assertNotNull(sourcePackage);
RenamePsiPackageProcessor.createRenameMoveProcessor("pack1.pack2", sourcePackage, false, false).run();
FileDocumentManager.getInstance().saveAllDocuments();
};
doTest(action);
doTest(createRenameAction("pack1", "pack1.pack2"));
}
public void testRenamePackageUp() {
final PerformAction action = (rootDir, rootAfter) -> {
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject);
final PsiPackage sourcePackage = psiFacade.findPackage("pack1.pack2");
assertNotNull(sourcePackage);
RenamePsiPackageProcessor.createRenameMoveProcessor("pack1", sourcePackage, false, false).run();
FileDocumentManager.getInstance().saveAllDocuments();
};
doTest(action);
doTest(createRenameAction("pack1.pack2", "pack1"));
}
public void testRenamePackageStaticImportsToNestedClasses() {
final PerformAction action = (rootDir, rootAfter) -> {
doTest(createRenameAction("pack1.pack2", "pack0.pack2"));
}
public void testDeepRenamePackage() {
doTest(createRenameAction("c.d", "x.y"));
}
private @NotNull PerformAction createRenameAction(String oldName, String newName) {
return (rootDir, rootAfter) -> {
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject);
final PsiPackage sourcePackage = psiFacade.findPackage("pack1.pack2");
final PsiPackage sourcePackage = psiFacade.findPackage(oldName);
assertNotNull(sourcePackage);
RenamePsiPackageProcessor.createRenameMoveProcessor("pack0.pack2", sourcePackage, false, false).run();
RenamePsiPackageProcessor.createRenameMoveProcessor(newName, sourcePackage, false, false).run();
FileDocumentManager.getInstance().saveAllDocuments();
};
doTest(action);
}
public void testMovePackageWithTxtFilesInside() {
doTest(createAction("pack1", "target"));
doTest(createMoveAction("pack1", "target"));
}
public void testMultipleClassesInOneFile() {
@@ -103,7 +80,7 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase {
};
VirtualFileManager.getInstance().addVirtualFileListener(fileAdapter);
try {
doTest(createAction("pack1", "target"));
doTest(createMoveAction("pack1", "target"));
}
finally {
VirtualFileManager.getInstance().removeVirtualFileListener(fileAdapter);
@@ -113,11 +90,11 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase {
public void testRemoveUnresolvedImports() {
doTest(createAction("pack1", "target"));
doTest(createMoveAction("pack1", "target"));
}
public void testXmlDirRefs() {
doTest(createAction("pack1", "target"));
doTest(createMoveAction("pack1", "target"));
}
private static final String EMPTY_TXT = "empty.txt";
@@ -166,7 +143,7 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase {
});
}
private MyPerformAction createAction(final String packageName, final String targetPackageName) {
private MyPerformAction createMoveAction(final String packageName, final String targetPackageName) {
return new MyPerformAction(packageName, targetPackageName);
}