[java] Don't run move directory with classes helper on light classes

This move directory with classes helper should only be responsible for moving Java files. #KTIJ-30171 Fixed

GitOrigin-RevId: 7d4b11ae7b0185920c60f51f7a3a4f5e1f7e7006
This commit is contained in:
Bart van Helvert
2024-06-04 10:34:07 +02:00
committed by intellij-monorepo-bot
parent a8433123ee
commit 9c9a813ea2
4 changed files with 15 additions and 43 deletions

View File

@@ -18,6 +18,7 @@ import com.intellij.refactoring.util.RefactoringConflictsUtil;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.Function;
import com.intellij.util.ObjectUtils;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NotNull;
@@ -44,7 +45,7 @@ public class JavaMoveDirectoryWithClassesHelper extends MoveDirectoryWithClasses
PsiManager psiManager = PsiManager.getInstance(project);
for (VirtualFile vFile : filesToMove.keySet()) {
PsiFile psiFile = psiManager.findFile(vFile);
if (psiFile instanceof PsiClassOwner) {
if (psiFile instanceof PsiJavaFile) {
String packageName = "";
MoveDirectoryWithClassesProcessor.TargetDirectoryWrapper targetWrapper = filesToMove.get(vFile);
PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(targetWrapper.getRootDirectory());
@@ -102,11 +103,11 @@ public class JavaMoveDirectoryWithClassesHelper extends MoveDirectoryWithClasses
Map<PsiElement, PsiElement> oldToNewElementsMapping,
List<? super PsiFile> movedFiles,
RefactoringElementListener listener) {
if (!(file instanceof PsiClassOwner)) {
if (!(file instanceof PsiJavaFile javaFile)) {
return false;
}
final PsiClass[] classes = ((PsiClassOwner)file).getClasses();
final PsiClass[] classes = javaFile.getClasses();
if (classes.length == 0) {
return false;
}
@@ -170,28 +171,30 @@ public class JavaMoveDirectoryWithClassesHelper extends MoveDirectoryWithClasses
UsageInfo[] infos,
PsiDirectory targetDirectory,
MultiMap<PsiElement, String> conflicts) {
if (files != null) {
final VirtualFile vFile = PsiUtilCore.getVirtualFile(targetDirectory);
if (vFile != null) {
RefactoringConflictsUtil.getInstance().analyzeModuleConflicts(project, files, infos, vFile, conflicts);
}
if (files == null || files.isEmpty()) return;
List<PsiJavaFile> javaFiles = ContainerUtil.filterIsInstance(files, PsiJavaFile.class);
final VirtualFile vFile = PsiUtilCore.getVirtualFile(targetDirectory);
if (vFile != null) {
RefactoringConflictsUtil.getInstance().analyzeModuleConflicts(project, javaFiles, infos, vFile, conflicts);
}
if (targetDirectory != null) {
PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(targetDirectory);
if (aPackage != null && files != null) {
MoveClassesOrPackagesProcessor.detectPackageLocalsUsed(conflicts, files.toArray(PsiElement.EMPTY_ARRAY), new PackageWrapper(aPackage));
if (aPackage != null) {
MoveClassesOrPackagesProcessor.detectPackageLocalsUsed(conflicts, javaFiles.toArray(PsiElement.EMPTY_ARRAY), new PackageWrapper(aPackage));
}
}
}
@Override
public void beforeMove(PsiFile psiFile) {
if (!(psiFile instanceof PsiJavaFile)) return;
ChangeContextUtil.encodeContextInfo(psiFile, true);
}
@Override
public void afterMove(PsiElement newElement) {
if (!(newElement instanceof PsiJavaFile)) return;
ChangeContextUtil.decodeContextInfo(newElement, null, null);
}