mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
push down: insert @Override if configured (IDEA-142456)
This commit is contained in:
@@ -17,6 +17,8 @@ package com.intellij.refactoring.memberPushDown;
|
||||
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.ChangeContextUtil;
|
||||
import com.intellij.codeInsight.generation.OverrideImplementExploreUtil;
|
||||
import com.intellij.codeInsight.generation.OverrideImplementUtil;
|
||||
import com.intellij.codeInsight.intention.impl.CreateClassDialog;
|
||||
import com.intellij.codeInsight.intention.impl.CreateSubclassAction;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
@@ -473,6 +475,9 @@ public class PushDownProcessor extends BaseRefactoringProcessor {
|
||||
}
|
||||
myJavaDocPolicy.processNewJavaDoc(((PsiMethod)newMember).getDocComment());
|
||||
}
|
||||
if (memberInfo.isToAbstract()) {
|
||||
OverrideImplementUtil.annotateOnOverrideImplement((PsiMethod)newMember, targetClass, (PsiMethod)memberInfo.getMember());
|
||||
}
|
||||
}
|
||||
else { //abstract method: remove @Override
|
||||
final PsiAnnotation annotation = AnnotationUtil.findAnnotation(methodBySignature, "java.lang.Override");
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
interface Test {
|
||||
void bar();
|
||||
}
|
||||
|
||||
class Child implements Test {
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
interface Test {
|
||||
void bar();
|
||||
}
|
||||
|
||||
class Child implements Test {
|
||||
@Override
|
||||
public abstract void bar();
|
||||
}
|
||||
@@ -63,6 +63,10 @@ public class PushDownTest extends LightRefactoringTestCase {
|
||||
|
||||
public void testInterfaceConstants() { doTest();}
|
||||
|
||||
public void testInsertOverrideWhenKeepAbstract() throws Exception {
|
||||
doTestImplements(true);
|
||||
}
|
||||
|
||||
private void doTest() {
|
||||
doTest(false);
|
||||
}
|
||||
@@ -107,6 +111,10 @@ public class PushDownTest extends LightRefactoringTestCase {
|
||||
}
|
||||
|
||||
private void doTestImplements() {
|
||||
doTestImplements(false);
|
||||
}
|
||||
|
||||
private void doTestImplements(boolean toAbstract) {
|
||||
configureByFile(BASE_PATH + getTestName(false) + ".java");
|
||||
|
||||
PsiClass currentClass = JavaPsiFacade.getInstance(getProject()).findClass("Test", GlobalSearchScope.projectScope(getProject()));
|
||||
@@ -114,6 +122,9 @@ public class PushDownTest extends LightRefactoringTestCase {
|
||||
List<MemberInfo> members = memberInfoStorage.getClassMemberInfos(currentClass);
|
||||
for (MemberInfo member : members) {
|
||||
member.setChecked(true);
|
||||
if (toAbstract) {
|
||||
member.setToAbstract(toAbstract);
|
||||
}
|
||||
}
|
||||
|
||||
new PushDownProcessor(getProject(), members.toArray(new MemberInfo[members.size()]), currentClass,
|
||||
|
||||
Reference in New Issue
Block a user