mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-04 23:39:07 +07:00
[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:
committed by
intellij-monorepo-bot
parent
a8433123ee
commit
9c9a813ea2
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user