move inner to interface: strip static modifier

This commit is contained in:
anna
2010-02-09 19:48:06 +03:00
parent ed0f05188a
commit 24c6e0bfa5
8 changed files with 36 additions and 2 deletions

View File

@@ -192,7 +192,7 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor {
PsiMember newMember=handler.doMove(myOptions, member, anchors.get(member), targetClass);
elementListener.elementMoved(newMember);
fixVisibility(newMember, usages);
fixModifierList(newMember, usages);
for (PsiReference reference : refsToBeRebind) {
reference.bindToElement(newMember);
}
@@ -213,13 +213,16 @@ public class MoveMembersProcessor extends BaseRefactoringProcessor {
}
}
private void fixVisibility(PsiMember newMember, final UsageInfo[] usages) throws IncorrectOperationException {
private void fixModifierList(PsiMember newMember, final UsageInfo[] usages) throws IncorrectOperationException {
PsiModifierList modifierList = newMember.getModifierList();
if(myTargetClass.isInterface()) {
modifierList.setModifierProperty(PsiModifier.PUBLIC, false);
modifierList.setModifierProperty(PsiModifier.PROTECTED, false);
modifierList.setModifierProperty(PsiModifier.PRIVATE, false);
if (newMember instanceof PsiClass) {
modifierList.setModifierProperty(PsiModifier.STATIC, false);
}
return;
}

View File

@@ -0,0 +1,2 @@
public class A {
}

View File

@@ -0,0 +1,9 @@
public interface B {
Inner i = new Inner();
class Inner {
public boolean equals(Object o) {
return o instanceof Inner;
}
}
}

View File

@@ -0,0 +1,3 @@
public class C {
B.Inner i = new B.Inner();
}

View File

@@ -0,0 +1,7 @@
public class A {
public static class Inner {
public boolean equals(Object o) {
return o instanceof Inner;
}
}
}

View File

@@ -0,0 +1,3 @@
public interface B {
A.Inner i = new A.Inner();
}

View File

@@ -0,0 +1,3 @@
public class C {
A.Inner i = new A.Inner();
}

View File

@@ -98,6 +98,10 @@ public class MoveMembersTest extends MultiFileTestCase {
}
}
public void testInnerToInterface() throws Exception {
doTest("A", "B", 0);
}
protected String getTestRoot() {
return "/refactoring/moveMembers/";
}