move members: escalate visibility fix in case of overloaded methods (IDEA-81323)

This commit is contained in:
anna
2012-02-14 10:30:01 +01:00
parent 6786b821e8
commit 14710359c5
6 changed files with 29 additions and 7 deletions
@@ -195,7 +195,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor {
PsiMember newMember = handler.doMove(myOptions, member, anchors.get(member), targetClass);
elementListener.elementMoved(newMember);
fixModifierList(newMember, usages);
fixModifierList(member, newMember, usages);
for (PsiReference reference : refsToBeRebind) {
reference.bindToElement(newMember);
}
@@ -216,7 +216,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor {
}
}
private void fixModifierList(PsiMember newMember, final UsageInfo[] usages) throws IncorrectOperationException {
private void fixModifierList(PsiMember member, PsiMember newMember, final UsageInfo[] usages) throws IncorrectOperationException {
PsiModifierList modifierList = newMember.getModifierList();
if (modifierList != null && myTargetClass.isInterface()) {
@@ -233,11 +233,8 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor {
final List<UsageInfo> filtered = new ArrayList<UsageInfo>();
for (UsageInfo usage : usages) {
if (usage instanceof MoveMembersUsageInfo) {
final PsiElement reference = ((MoveMembersUsageInfo)usage).reference;
if (reference instanceof PsiReference && ((PsiReference)reference).resolve() == newMember) {
filtered.add(usage);
}
if (usage instanceof MoveMembersUsageInfo && member == ((MoveMembersUsageInfo)usage).member) {
filtered.add(usage);
}
}
VisibilityUtil.fixVisibility(filtered.toArray(new UsageInfo[filtered.size()]), newMember, myNewVisibility);