mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-05 08:06:56 +07:00
[kotlin] Add API for retargeting usages in MoveDirectoryWithClassesHelper
Various languages might have different requirements on how usages should be retargeted, this API allows implementations to define their own retargeting logic. #KTIJ-29395 GitOrigin-RevId: c411ef45ef091316a1fab9dd620e57c73d9975b9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
aedb2b1c0f
commit
4171b97475
@@ -14,6 +14,7 @@ import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.refactoring.PackageWrapper;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.util.MoveRenameUsageInfo;
|
||||
import com.intellij.refactoring.util.RefactoringConflictsUtil;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.Function;
|
||||
@@ -124,6 +125,22 @@ public class JavaMoveDirectoryWithClassesHelper extends MoveDirectoryWithClasses
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void retargetUsages(List<UsageInfo> usages, Map<PsiElement, PsiElement> oldToNewMap) {
|
||||
List<UsageInfo> usageInfosToProcess = ContainerUtil.filter(usages, usageInfo -> {
|
||||
if (usageInfo instanceof MoveRenameUsageInfo moveRenameUsageInfo) {
|
||||
final PsiElement referencedElement = moveRenameUsageInfo.getReferencedElement();
|
||||
if (referencedElement == null) return false;
|
||||
return referencedElement.getContainingFile() instanceof PsiJavaFile;
|
||||
}
|
||||
else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
CommonMoveUtil.retargetUsages(usageInfosToProcess.toArray(UsageInfo.EMPTY_ARRAY), oldToNewMap);
|
||||
usages.removeAll(usageInfosToProcess);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postProcessUsages(UsageInfo[] usages, Function<? super PsiDirectory, ? extends PsiDirectory> newDirMapper) {
|
||||
for (UsageInfo usage : usages) {
|
||||
|
||||
Reference in New Issue
Block a user