inline superclass refactoring: allow to collapse only one inheritance (IDEA-93319)

This commit is contained in:
Anna Kozlova
2013-06-14 18:21:30 +04:00
parent 1f9e8cbc6d
commit 2fd555eb23
15 changed files with 253 additions and 29 deletions
@@ -0,0 +1,3 @@
abstract class Super {
public abstract void method() {}
}
@@ -0,0 +1,16 @@
class Test {
public void context() {
method();
}
public void method() {}
}
class Test1 extends Super {
@Override
public void method() {}
}
class U {
Super t = new Test1();
}
@@ -0,0 +1,3 @@
abstract class Super {
public abstract void method() {}
}
@@ -0,0 +1,17 @@
class Test extends Super{
public void context() {
super.method();
}
@Override
public void method() {}
}
class Test1 extends Super {
@Override
public void method() {}
}
class U {
Super t = new Test1();
}
@@ -0,0 +1,3 @@
abstract class Super {
public abstract void method() {}
}
@@ -0,0 +1,15 @@
class Test {
public void context() {
method();
}
public void method() {}
}
class Test1 {
public void method() {}
}
class U {
Test t = new Test1();
}
@@ -0,0 +1,3 @@
abstract class Super {
public abstract void method() {}
}
@@ -0,0 +1,17 @@
class Test extends Super{
public void context() {
super.method();
}
@Override
public void method() {}
}
class Test1 extends Super {
@Override
public void method() {}
}
class U {
Super t = new Test();
}
@@ -27,6 +27,10 @@ public class InlineSuperClassTest extends MultiFileTestCase {
}
private void doTest(final boolean fail) throws Exception {
doTest(fail, false);
}
private void doTest(final boolean fail, final boolean inlineOne) throws Exception {
try {
doTest(new PerformAction() {
@Override
@@ -41,7 +45,7 @@ public class InlineSuperClassTest extends MultiFileTestCase {
if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", GlobalSearchScope.allScope(myProject));
assertNotNull("Class Super not found", superClass);
new InlineSuperClassRefactoringProcessor(getProject(), superClass, DocCommentPolicy.ASIS, aClass).run();
new InlineSuperClassRefactoringProcessor(getProject(), inlineOne ? aClass : null, superClass, DocCommentPolicy.ASIS, aClass).run();
//LocalFileSystem.getInstance().refresh(false);
//FileDocumentManager.getInstance().saveAllDocuments();
@@ -61,6 +65,14 @@ public class InlineSuperClassTest extends MultiFileTestCase {
}
}
public void testInlineOneClass() throws Exception {
doTest(false, true);
}
public void testInlineOneClassWithConflicts() throws Exception {
doTest(true, true);
}
public void testAbstractOverrides() throws Exception {
doTest();
}
@@ -184,7 +196,7 @@ public class InlineSuperClassTest extends MultiFileTestCase {
PsiClass superClass = myJavaFacade.findClass("Super", GlobalSearchScope.allScope(myProject));
if (superClass == null) superClass = myJavaFacade.findClass("p1.Super", GlobalSearchScope.allScope(myProject));
assertNotNull("Class Super not found", superClass);
new InlineSuperClassRefactoringProcessor(getProject(), superClass, DocCommentPolicy.ASIS,
new InlineSuperClassRefactoringProcessor(getProject(), null, superClass, DocCommentPolicy.ASIS,
myJavaFacade.findClass("Test", GlobalSearchScope.allScope(myProject)),
myJavaFacade.findClass("Test1", GlobalSearchScope.allScope(myProject))).run();
}