@NotNull
protected UsageInfo[] findUsages() {
- return new UsageInfo[0];
+ final List<UsageInfo> result = new ArrayList<UsageInfo>();
+ for (MemberInfo memberInfo : myMembersToMove) {
+ final PsiMember member = memberInfo.getMember();
+ if (member.hasModifierProperty(PsiModifier.STATIC)) {
+ for (PsiReference reference : ReferencesSearch.search(member)) {
+ result.add(new UsageInfo(reference));
+ }
+ }
+ }
+ return result.isEmpty() ? UsageInfo.EMPTY_ARRAY : result.toArray(new UsageInfo[result.size()]);
}
protected void performRefactoring(UsageInfo[] usages) {
moveMembersToBase();
moveFieldInitializations();
+ for (UsageInfo usage : usages) {
+ PsiElement element = usage.getElement();
+ if (element instanceof PsiReferenceExpression) {
+ PsiExpression qualifierExpression = ((PsiReferenceExpression)element).getQualifierExpression();
+ if (qualifierExpression instanceof PsiReferenceExpression && ((PsiReferenceExpression)qualifierExpression).resolve() == mySourceClass) {
+ ((PsiReferenceExpression)qualifierExpression).bindToElement(myTargetSuperClass);
+ }
+ }
+ }
processMethodsDuplicates();
}
doTest(new RefactoringTestUtil.MemberDescriptor("x", PsiField.class),
new RefactoringTestUtil.MemberDescriptor("getX", PsiMethod.class),
new RefactoringTestUtil.MemberDescriptor("setX", PsiMethod.class));
-
}
public void testPullUpInheritedStaticClasses() throws Exception {
public void testPullUpPrivateInnerClassWithPrivateConstructor() throws Exception {
doTest(new RefactoringTestUtil.MemberDescriptor("C", PsiClass.class));
}
-
+
public void testPullUpAndAbstractize() throws Exception {
doTest(new RefactoringTestUtil.MemberDescriptor("a", PsiMethod.class),
new RefactoringTestUtil.MemberDescriptor("b", PsiMethod.class, true));
doTest(false, new RefactoringTestUtil.MemberDescriptor("I", PsiClass.class));
}
+ public void testUpdateStaticRefs() throws Exception {
+ doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
+ }
+
private void doTest(RefactoringTestUtil.MemberDescriptor... membersToFind) throws Exception {
doTest(true, membersToFind);
}
}
MemberInfo[] infos = RefactoringTestUtil.findMembers(sourceClass, membersToFind);
- final int[] countMoved = new int[] {0};
+ final int[] countMoved = new int[]{0};
final MoveMemberListener listener = new MoveMemberListener() {
@Override
public void memberMoved(PsiClass aClass, PsiMember member) {
protected String getTestDataPath() {
return JavaTestUtil.getJavaTestDataPath();
}
-
}