diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java index 4c7b562b95aa..565d75ef9198 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/RenameProcessor.java @@ -220,7 +220,7 @@ public class RenameProcessor extends BaseRefactoringProcessor { @Override public void run() { for (final AutomaticRenamer renamer : myRenamers) { - renamer.findUsages(variableUsages, mySearchInComments, mySearchTextOccurrences, mySkippedUsages); + renamer.findUsages(variableUsages, mySearchInComments, mySearchTextOccurrences, mySkippedUsages, myAllRenames); } } }; diff --git a/platform/lang-impl/src/com/intellij/refactoring/rename/naming/AutomaticRenamer.java b/platform/lang-impl/src/com/intellij/refactoring/rename/naming/AutomaticRenamer.java index 347ead94393a..4a2bb0027a6b 100644 --- a/platform/lang-impl/src/com/intellij/refactoring/rename/naming/AutomaticRenamer.java +++ b/platform/lang-impl/src/com/intellij/refactoring/rename/naming/AutomaticRenamer.java @@ -17,6 +17,7 @@ package com.intellij.refactoring.rename.naming; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiNamedElement; import com.intellij.refactoring.rename.RenameProcessor; import com.intellij.refactoring.rename.RenameUtil; @@ -55,10 +56,18 @@ public abstract class AutomaticRenamer { final boolean searchInStringsAndComments, final boolean searchInNonJavaFiles, List unresolvedUsages) { + findUsages(result, searchInStringsAndComments, searchInNonJavaFiles, unresolvedUsages, null); + } + + public void findUsages(List result, + final boolean searchInStringsAndComments, + final boolean searchInNonJavaFiles, + List unresolvedUsages, + Map allRenames) { for (Iterator iterator = myElements.iterator(); iterator.hasNext();) { final PsiNamedElement variable = iterator.next(); RenameProcessor.assertNonCompileElement(variable); - final boolean success = findUsagesForElement(variable, result, searchInStringsAndComments, searchInNonJavaFiles, unresolvedUsages); + final boolean success = findUsagesForElement(variable, result, searchInStringsAndComments, searchInNonJavaFiles, unresolvedUsages, allRenames); if (!success) { iterator.remove(); } @@ -68,10 +77,22 @@ public abstract class AutomaticRenamer { private boolean findUsagesForElement(PsiNamedElement element, List result, final boolean searchInStringsAndComments, - final boolean searchInNonJavaFiles, List unresolvedUsages) { + final boolean searchInNonJavaFiles, + List unresolvedUsages, + Map allRenames) { final String newName = getNewName(element); if (newName != null) { - final UsageInfo[] usages = RenameUtil.findUsages(element, newName, searchInStringsAndComments, searchInNonJavaFiles, myRenames); + + final LinkedHashMap renames = new LinkedHashMap(); + renames.putAll(myRenames); + if (allRenames != null) { + for (PsiElement psiElement : allRenames.keySet()) { + if (psiElement instanceof PsiNamedElement) { + renames.put((PsiNamedElement)psiElement, allRenames.get(psiElement)); + } + } + } + final UsageInfo[] usages = RenameUtil.findUsages(element, newName, searchInStringsAndComments, searchInNonJavaFiles, renames); for (final UsageInfo usage : usages) { if (usage instanceof UnresolvableCollisionUsageInfo) { if (unresolvedUsages != null) {