mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
automatic renamer: take into account base renamers to avoid conflicts (IDEA-104417)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
+24
-3
@@ -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<UnresolvableCollisionUsageInfo> unresolvedUsages) {
|
||||
findUsages(result, searchInStringsAndComments, searchInNonJavaFiles, unresolvedUsages, null);
|
||||
}
|
||||
|
||||
public void findUsages(List<UsageInfo> result,
|
||||
final boolean searchInStringsAndComments,
|
||||
final boolean searchInNonJavaFiles,
|
||||
List<UnresolvableCollisionUsageInfo> unresolvedUsages,
|
||||
Map<PsiElement, String> allRenames) {
|
||||
for (Iterator<PsiNamedElement> 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<UsageInfo> result,
|
||||
final boolean searchInStringsAndComments,
|
||||
final boolean searchInNonJavaFiles, List<UnresolvableCollisionUsageInfo> unresolvedUsages) {
|
||||
final boolean searchInNonJavaFiles,
|
||||
List<UnresolvableCollisionUsageInfo> unresolvedUsages,
|
||||
Map<PsiElement, String> allRenames) {
|
||||
final String newName = getNewName(element);
|
||||
if (newName != null) {
|
||||
final UsageInfo[] usages = RenameUtil.findUsages(element, newName, searchInStringsAndComments, searchInNonJavaFiles, myRenames);
|
||||
|
||||
final LinkedHashMap<PsiNamedElement, String> renames = new LinkedHashMap<PsiNamedElement, String>();
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user