extract super class: pull up implements/extends

This commit is contained in:
anna
2009-10-29 18:25:45 +03:00
parent 91fb4c8d4c
commit e4664b62ca
5 changed files with 25 additions and 1 deletions
@@ -0,0 +1,2 @@
public abstract class Test implements java.util.List<String> {
}
@@ -0,0 +1,2 @@
public abstract class TestSubclass extends Test {
}
@@ -0,0 +1,2 @@
public abstract class Test implements java.util.List<String>{
}
@@ -53,6 +53,10 @@ public class ExtractSuperClassTest extends CodeInsightTestCase {
doTest("B", "AB");
}
public void testExtendsList() throws Exception {
doTest("Test", "TestSubclass", new PullUpTest.MemberDescriptor("List", PsiClass.class));
}
@Override
protected Sdk getTestProjectJdk() {
return JavaSdkImpl.getMockJdk15("mock 1.5");
@@ -104,8 +104,22 @@ public class PullUpTest extends LightCodeInsightTestCase {
final Class<? extends PsiMember> clazz = membersToFind[i].myClass;
final String name = membersToFind[i].myName;
PsiMember member = null;
boolean overrides = false;
PsiReferenceList refList = null;
if (PsiClass.class.isAssignableFrom(clazz)) {
member = sourceClass.findInnerClassByName(name, false);
if (member == null) {
final PsiClass[] supers = sourceClass.getSupers();
for (PsiClass superTypeClass : supers) {
if (superTypeClass.getName().equals(name)) {
member = superTypeClass;
overrides = true;
refList = superTypeClass.isInterface() ? sourceClass.getImplementsList() : sourceClass.getExtendsList();
break;
}
}
}
} else if (PsiMethod.class.isAssignableFrom(clazz)) {
final PsiMethod[] methods = sourceClass.findMethodsByName(name, false);
assertEquals(1, methods.length);
@@ -115,7 +129,7 @@ public class PullUpTest extends LightCodeInsightTestCase {
}
assertNotNull(member);
infos[i] = new MemberInfo(member);
infos[i] = new MemberInfo(member, overrides, refList);
infos[i].setToAbstract(membersToFind[i].myAbstract);
}
return infos;