From 3042cbb344ecef5cbcc66bfaa31c7aea1f033139 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Wed, 4 May 2016 17:12:00 +0200 Subject: [PATCH] push down: order abstract/default/static (IDEA-148492) --- .../memberPushDown/JavaPushDownDelegate.java | 12 +++++++++--- .../refactoring/pushDown/DefaultMethodToClass.java | 7 +++++++ .../pushDown/DefaultMethodToClassKeepAbstract.java | 7 +++++++ .../DefaultMethodToClassKeepAbstract_after.java | 10 ++++++++++ .../pushDown/DefaultMethodToClass_after.java | 8 ++++++++ .../pushDown/DefaultMethodToInterface.java | 7 +++++++ .../DefaultMethodToInterfaceKeepAbstract.java | 7 +++++++ .../DefaultMethodToInterfaceKeepAbstract_after.java | 10 ++++++++++ .../pushDown/DefaultMethodToInterface_after.java | 8 ++++++++ .../pushDown/FunctionalInterface_after.java | 2 +- .../InsertOverrideWhenKeepAbstract_after.java | 2 +- .../refactoring/pushDown/InterfaceMethodToClass.java | 4 ++++ .../pushDown/InterfaceMethodToClass_after.java | 5 +++++ .../pushDown/InterfaceStaticMethodToClass.java | 7 +++++++ .../pushDown/InterfaceStaticMethodToClass_after.java | 8 ++++++++ .../pushDown/InterfaceStaticMethodToInterface.java | 7 +++++++ .../InterfaceStaticMethodToInterface_after.java | 8 ++++++++ .../com/intellij/refactoring/PushDownTest.java | 12 +++++++++++- 18 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToClass.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToClass_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass_after.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface.java create mode 100644 java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java b/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java index c344f6df60a1..283ff8963e1f 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPushDown/JavaPushDownDelegate.java @@ -218,15 +218,21 @@ public class JavaPushDownDelegate extends PushDownDelegateo() { + System.out.println(); + } +} + +class B implements A {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract.java new file mode 100644 index 000000000000..b14b4aeda3fc --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract.java @@ -0,0 +1,7 @@ +interface Test { + default void foo() { + System.out.println(); + } +} + +class B implements Test {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract_after.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract_after.java new file mode 100644 index 000000000000..b37b46e898cb --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClassKeepAbstract_after.java @@ -0,0 +1,10 @@ +interface Test { + void foo(); +} + +class B implements Test { + @Override + public void foo() { + System.out.println(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClass_after.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClass_after.java new file mode 100644 index 000000000000..bfe226a1029f --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToClass_after.java @@ -0,0 +1,8 @@ +interface A { +} + +class B implements A { + public void foo() { + System.out.println(); +} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface.java new file mode 100644 index 000000000000..662e2ed39b04 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface.java @@ -0,0 +1,7 @@ +interface A { + default void foo() { + System.out.println(""); + } +} + +interface B extends A {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract.java new file mode 100644 index 000000000000..9b970560fee4 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract.java @@ -0,0 +1,7 @@ +interface Test { + default void foo() { + System.out.println(); + } +} + +interface A extends Test {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract_after.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract_after.java new file mode 100644 index 000000000000..f91d7573bece --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterfaceKeepAbstract_after.java @@ -0,0 +1,10 @@ +interface Test { + void foo(); +} + +interface A extends Test { + @Override + default void foo() { + System.out.println(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface_after.java b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface_after.java new file mode 100644 index 000000000000..f283994face2 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/DefaultMethodToInterface_after.java @@ -0,0 +1,8 @@ +interface A { +} + +interface B extends A { + default void foo() { + System.out.println(""); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/FunctionalInterface_after.java b/java/java-tests/testData/refactoring/pushDown/FunctionalInterface_after.java index e83436078bb7..40fe6ec59439 100644 --- a/java/java-tests/testData/refactoring/pushDown/FunctionalInterface_after.java +++ b/java/java-tests/testData/refactoring/pushDown/FunctionalInterface_after.java @@ -5,6 +5,6 @@ interface Base { } } -class Child implements Base { +abstract class Child implements Base { public abstract void bar(); } diff --git a/java/java-tests/testData/refactoring/pushDown/InsertOverrideWhenKeepAbstract_after.java b/java/java-tests/testData/refactoring/pushDown/InsertOverrideWhenKeepAbstract_after.java index 592f48687ff0..115dc0759543 100644 --- a/java/java-tests/testData/refactoring/pushDown/InsertOverrideWhenKeepAbstract_after.java +++ b/java/java-tests/testData/refactoring/pushDown/InsertOverrideWhenKeepAbstract_after.java @@ -2,7 +2,7 @@ interface Test { void bar(); } -class Child implements Test { +abstract class Child implements Test { @Override public abstract void bar(); } diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass.java b/java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass.java new file mode 100644 index 000000000000..276c96ba9e72 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass.java @@ -0,0 +1,4 @@ +interface A { + void foo(); +} +class B implements A {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass_after.java b/java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass_after.java new file mode 100644 index 000000000000..87798bb11e8f --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceMethodToClass_after.java @@ -0,0 +1,5 @@ +interface A { +} +abstract class B implements A { + public abstract void foo(); +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass.java b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass.java new file mode 100644 index 000000000000..23480f8edb8a --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass.java @@ -0,0 +1,7 @@ +interface A { + static void foo() { + System.out.println(); + } +} + +class B implements A {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass_after.java b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass_after.java new file mode 100644 index 000000000000..371e551db7d2 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToClass_after.java @@ -0,0 +1,8 @@ +interface A { +} + +class B implements A { + public static void foo() { + System.out.println(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface.java b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface.java new file mode 100644 index 000000000000..efe3b5869dad --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface.java @@ -0,0 +1,7 @@ +interface A { + static void foo() { + System.out.println(); + } +} + +interface B extends A {} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface_after.java b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface_after.java new file mode 100644 index 000000000000..76d30b143e62 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/InterfaceStaticMethodToInterface_after.java @@ -0,0 +1,8 @@ +interface A { +} + +interface B extends A { + static void foo() { + System.out.println(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java b/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java index 92a85d51c9e0..1e386f69f6d5 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/PushDownTest.java @@ -64,7 +64,17 @@ public class PushDownTest extends LightRefactoringTestCase { public void testInterfaceConstants() { doTest();} public void testReferenceForMovedInnerClass() { doTest();} - + + public void testDefaultMethodToInterface() {doTest();} + public void testDefaultMethodToInterfaceKeepAbstract() {doTestImplements(true);} + public void testDefaultMethodToClass() {doTest();} + public void testDefaultMethodToClassKeepAbstract() { doTestImplements(true); } + + public void testInterfaceStaticMethodToInterface() { doTest(); } + public void testInterfaceStaticMethodToClass() { doTest(); } + + public void testInterfaceMethodToClass() { doTest();} + public void testInsertOverrideWhenKeepAbstract() throws Exception { doTestImplements(true); }