From 0f9d0086a8228746d46443d042f34a6f1aff9870 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Thu, 21 May 2015 12:25:39 +0200 Subject: [PATCH] invert boolean: don't start rename processor if name was not changed (IDEA-140553) --- .../invertBoolean/InvertBooleanProcessor.java | 33 +++++++++++-------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/invertBoolean/InvertBooleanProcessor.java b/java/java-impl/src/com/intellij/refactoring/invertBoolean/InvertBooleanProcessor.java index cf45aa459c02..bb40a1f41ffc 100644 --- a/java/java-impl/src/com/intellij/refactoring/invertBoolean/InvertBooleanProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/invertBoolean/InvertBooleanProcessor.java @@ -19,6 +19,7 @@ import com.intellij.codeInsight.CodeInsightServicesUtil; import com.intellij.codeInsight.daemon.impl.RecursiveCallLineMarkerProvider; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; +import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.Ref; import com.intellij.psi.*; import com.intellij.psi.search.searches.MethodReferencesSearch; @@ -59,7 +60,7 @@ public class InvertBooleanProcessor extends BaseRefactoringProcessor { myElement = namedElement; myNewName = newName; final Project project = namedElement.getProject(); - myRenameProcessor = new RenameProcessor(project, namedElement, newName, false, false); + myRenameProcessor = Comparing.equal(namedElement.getName(), myNewName) ? null : new RenameProcessor(project, namedElement, newName, false, false); mySmartPointerManager = SmartPointerManager.getInstance(project); } @@ -83,7 +84,7 @@ public class InvertBooleanProcessor extends BaseRefactoringProcessor { return showConflicts(conflicts, null); } - if (myRenameProcessor.preprocessUsages(refUsages)) { + if (myRenameProcessor == null || myRenameProcessor.preprocessUsages(refUsages)) { prepareSuccessful(); return true; } @@ -99,8 +100,10 @@ public class InvertBooleanProcessor extends BaseRefactoringProcessor { if (myElement instanceof PsiMethod) { final Collection overriders = OverridingMethodsSearch.search((PsiMethod)myElement).findAll(); - for (PsiMethod overrider : overriders) { - myRenameProcessor.addElement(overrider, myNewName); + if (myRenameProcessor != null) { + for (PsiMethod overrider : overriders) { + myRenameProcessor.addElement(overrider, myNewName); + } } Collection allMethods = new HashSet(overriders); @@ -153,12 +156,14 @@ public class InvertBooleanProcessor extends BaseRefactoringProcessor { final Collection overriders = OverridingMethodsSearch.search(method).findAll(); for (PsiMethod overrider : overriders) { final PsiParameter overriderParameter = overrider.getParameterList().getParameters()[index]; - myRenameProcessor.addElement(overriderParameter, myNewName); + if (myRenameProcessor != null) { + myRenameProcessor.addElement(overriderParameter, myNewName); + } addRefsToInvert(toInvert, overriderParameter); } } - final UsageInfo[] renameUsages = myRenameProcessor.findUsages(); + final UsageInfo[] renameUsages = myRenameProcessor != null ? myRenameProcessor.findUsages() : UsageInfo.EMPTY_ARRAY; final SmartPsiElementPointer[] usagesToInvert = toInvert.toArray(new SmartPsiElementPointer[toInvert.size()]); @@ -257,13 +262,15 @@ public class InvertBooleanProcessor extends BaseRefactoringProcessor { @Override protected void performRefactoring(UsageInfo[] usages) { - for (final PsiElement element : myRenameProcessor.getElements()) { - try { - RenameUtil.doRename(element, myRenameProcessor.getNewName(element), extractUsagesForElement(element, usages), myProject, null); - } - catch (final IncorrectOperationException e) { - RenameUtil.showErrorMessage(e, element, myProject); - return; + if (myRenameProcessor != null) { + for (final PsiElement element : myRenameProcessor.getElements()) { + try { + RenameUtil.doRename(element, myRenameProcessor.getNewName(element), extractUsagesForElement(element, usages), myProject, null); + } + catch (final IncorrectOperationException e) { + RenameUtil.showErrorMessage(e, element, myProject); + return; + } } }