mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
EA-47556 - NPE: MoveFilesOrDirectoriesProcessor$.compare
move sortDepthFirstRightLeftOrder to api
This commit is contained in:
+1
-1
@@ -187,7 +187,7 @@ public class ConvertToInstanceMethodProcessor extends BaseRefactoringProcessor {
|
||||
myTypeParameterReplacements = buildTypeParameterReplacements();
|
||||
List<PsiClass> inheritors = new ArrayList<PsiClass>();
|
||||
|
||||
RefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
|
||||
// Process usages
|
||||
for (final UsageInfo usage : usages) {
|
||||
|
||||
+1
-1
@@ -299,7 +299,7 @@ public class EncapsulateFieldsProcessor extends BaseRefactoringProcessor {
|
||||
for (List<MyUsageInfo> usageInfos : usagesInFiles.values()) {
|
||||
//this is to avoid elements to become invalid as a result of processUsage
|
||||
final MyUsageInfo[] infos = usageInfos.toArray(new MyUsageInfo[usageInfos.size()]);
|
||||
RefactoringUtil.sortDepthFirstRightLeftOrder(infos);
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(infos);
|
||||
|
||||
for (MyUsageInfo info : infos) {
|
||||
processUsage(info);
|
||||
|
||||
@@ -404,7 +404,7 @@ public class InlineMethodProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
}
|
||||
else {
|
||||
RefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
if (myMethod.isConstructor()) {
|
||||
for (UsageInfo usage : usages) {
|
||||
PsiElement element = usage.getElement();
|
||||
|
||||
+2
-5
@@ -32,10 +32,7 @@ import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.refactoring.inlineSuperClass.usageInfo.*;
|
||||
import com.intellij.refactoring.memberPushDown.PushDownConflicts;
|
||||
import com.intellij.refactoring.memberPushDown.PushDownProcessor;
|
||||
import com.intellij.refactoring.util.DocCommentPolicy;
|
||||
import com.intellij.refactoring.util.FixableUsageInfo;
|
||||
import com.intellij.refactoring.util.FixableUsagesRefactoringProcessor;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.refactoring.util.*;
|
||||
import com.intellij.refactoring.util.classMembers.MemberInfo;
|
||||
import com.intellij.refactoring.util.classMembers.MemberInfoStorage;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
@@ -290,7 +287,7 @@ public class InlineSuperClassRefactoringProcessor extends FixableUsagesRefactori
|
||||
} else {
|
||||
super.performRefactoring(pushDownUsages);
|
||||
}
|
||||
RefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
for (UsageInfo usageInfo : usages) {
|
||||
if (!(usageInfo instanceof ReplaceExtendsListUsageInfo || usageInfo instanceof RemoveImportUsageInfo)) {
|
||||
try {
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ public abstract class FixableUsagesRefactoringProcessor extends BaseRefactoringP
|
||||
}
|
||||
|
||||
protected void performRefactoring(UsageInfo[] usageInfos) {
|
||||
RefactoringUtil.sortDepthFirstRightLeftOrder(usageInfos);
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usageInfos);
|
||||
for (UsageInfo usageInfo : usageInfos) {
|
||||
if (usageInfo instanceof FixableUsageInfo) {
|
||||
try {
|
||||
|
||||
@@ -172,22 +172,6 @@ public class RefactoringUtil {
|
||||
}
|
||||
}
|
||||
|
||||
//order of usages accross different files is irrelevant
|
||||
public static void sortDepthFirstRightLeftOrder(final UsageInfo[] usages) {
|
||||
Arrays.sort(usages, new Comparator<UsageInfo>() {
|
||||
public int compare(final UsageInfo usage1, final UsageInfo usage2) {
|
||||
final PsiElement element1 = usage1.getElement();
|
||||
final PsiElement element2 = usage2.getElement();
|
||||
if (element1 == null) {
|
||||
if (element2 == null) return 0;
|
||||
return 1;
|
||||
}
|
||||
if (element2 == null) return -1;
|
||||
return element2.getTextRange().getStartOffset() - element1.getTextRange().getStartOffset();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String suggestNewOverriderName(String oldOverriderName, String oldBaseName, String newBaseName) {
|
||||
if (oldOverriderName.equals(oldBaseName)) {
|
||||
|
||||
@@ -29,6 +29,7 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -38,6 +39,7 @@ import org.jetbrains.annotations.Nullable;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* @author ven
|
||||
@@ -51,6 +53,22 @@ public class CommonRefactoringUtil {
|
||||
dialog.show();
|
||||
}
|
||||
|
||||
//order of usages accross different files is irrelevant
|
||||
public static void sortDepthFirstRightLeftOrder(final UsageInfo[] usages) {
|
||||
Arrays.sort(usages, new Comparator<UsageInfo>() {
|
||||
public int compare(final UsageInfo usage1, final UsageInfo usage2) {
|
||||
final PsiElement element1 = usage1.getElement();
|
||||
final PsiElement element2 = usage2.getElement();
|
||||
if (element1 == null) {
|
||||
if (element2 == null) return 0;
|
||||
return 1;
|
||||
}
|
||||
if (element2 == null) return -1;
|
||||
return element2.getTextRange().getStartOffset() - element1.getTextRange().getStartOffset();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Fatal refactoring problem during unit test run. Corresponds to message of modal dialog shown during user driven refactoring.
|
||||
*/
|
||||
|
||||
+2
-6
@@ -33,6 +33,7 @@ import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.move.FileReferenceContextUtil;
|
||||
import com.intellij.refactoring.move.MoveCallback;
|
||||
import com.intellij.refactoring.rename.RenameUtil;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.refactoring.util.NonCodeUsageInfo;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
@@ -176,12 +177,7 @@ public class MoveFilesOrDirectoriesProcessor extends BaseRefactoringProcessor {
|
||||
elementListener.elementMoved(element);
|
||||
}
|
||||
// sort by offset descending to process correctly several usages in one PsiElement [IDEADEV-33013]
|
||||
Arrays.sort(usages, new Comparator<UsageInfo>() {
|
||||
@Override
|
||||
public int compare(final UsageInfo o1, final UsageInfo o2) {
|
||||
return o1.getElement() == o2.getElement() ? o2.getRangeInElement().getStartOffset() - o1.getRangeInElement().getStartOffset() : 0;
|
||||
}
|
||||
});
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
|
||||
// fix references in moved files to outer files
|
||||
for (PsiFile movedFile : movedFiles) {
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.refactoring.util.CommonRefactoringUtil;
|
||||
import com.intellij.usageView.BaseUsageViewDescriptor;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
@@ -192,7 +192,7 @@ public class GroovyInlineLocalProcessor extends BaseRefactoringProcessor {
|
||||
|
||||
@Override
|
||||
protected void performRefactoring(UsageInfo[] usages) {
|
||||
RefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
CommonRefactoringUtil.sortDepthFirstRightLeftOrder(usages);
|
||||
|
||||
for (UsageInfo usage : usages) {
|
||||
GrVariableInliner.inlineReference(usage, myLocal, mySettings.getInitializer());
|
||||
|
||||
Reference in New Issue
Block a user