mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
pull up default method: leave as is if pulled as abstract (IDEA-151756)
This commit is contained in:
@@ -227,7 +227,7 @@ public class JavaPullUpHelper implements PullUpHelper<MemberInfo> {
|
||||
method.findSuperMethods(myTargetSuperClass).length == 0) {
|
||||
deleteOverrideAnnotationIfFound(methodCopy);
|
||||
}
|
||||
boolean isOriginalMethodAbstract = method.hasModifierProperty(PsiModifier.ABSTRACT) || method.hasModifierProperty(PsiModifier.DEFAULT);
|
||||
boolean isOriginalMethodAbstract = method.hasModifierProperty(PsiModifier.ABSTRACT);
|
||||
if (myIsTargetInterface || info.isToAbstract()) {
|
||||
ChangeContextUtil.clearContextInfo(method);
|
||||
|
||||
@@ -235,7 +235,11 @@ public class JavaPullUpHelper implements PullUpHelper<MemberInfo> {
|
||||
//pull as default
|
||||
RefactoringUtil.makeMethodDefault(methodCopy);
|
||||
isOriginalMethodAbstract = true;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
if (info.isToAbstract() && method.hasModifierProperty(PsiModifier.DEFAULT)) {
|
||||
PsiUtil.setModifierProperty(methodCopy, PsiModifier.DEFAULT, false);
|
||||
}
|
||||
RefactoringUtil.makeMethodAbstract(myTargetSuperClass, methodCopy);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
interface A {}
|
||||
interface B extends A {
|
||||
default void f<caret>oo() {
|
||||
System.out.println("in B");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
interface A {
|
||||
void foo();
|
||||
}
|
||||
interface B extends A {
|
||||
@Override
|
||||
default void foo() {
|
||||
System.out.println("in B");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
interface A {}
|
||||
interface B extends A {
|
||||
default void f<caret>oo() {
|
||||
System.out.println("in B");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
interface A {
|
||||
default void foo() {
|
||||
System.out.println("in B");
|
||||
}
|
||||
}
|
||||
interface B extends A {
|
||||
}
|
||||
@@ -178,6 +178,14 @@ public class PullUpTest extends LightRefactoringTestCase {
|
||||
doTest(false, "Class <b><code>Test.Printer</code></b> already contains a method <b><code>foo()</code></b>", new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
|
||||
}
|
||||
|
||||
public void testDefaultMethodAsAbstract() throws Exception {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class, true));
|
||||
}
|
||||
|
||||
public void testDefaultMethodAsDefault() throws Exception {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class, false));
|
||||
}
|
||||
|
||||
public void testPublicMethodFromPrivateClassConflict() {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("HM", PsiClass.class), new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user