From 930bbc66e293e624e0c651a88e1108908371aa90 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 16 Dec 2015 14:02:02 +0100 Subject: [PATCH] extract super: ensure extends reference reformatted (IDEA-149247) --- .../extractInterface/ExtractInterfaceHandler.java | 8 +++++--- .../extractSuperclass/ExtractSuperClassUtil.java | 5 +++-- .../multipleTypeParameters/after/Test.java | 3 +++ .../multipleTypeParameters/after/TestSubclass.java | 2 ++ .../multipleTypeParameters/before/Test.java | 3 +++ .../com/intellij/refactoring/ExtractSuperClassTest.java | 4 ++++ 6 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java create mode 100644 java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java create mode 100644 java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java diff --git a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java index 6d604f466955..6188ef3f6712 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/extractInterface/ExtractInterfaceHandler.java @@ -26,6 +26,7 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.ScrollType; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.codeStyle.CodeStyleManager; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.RefactoringActionHandler; import com.intellij.refactoring.RefactoringBundle; @@ -140,20 +141,21 @@ public class ExtractInterfaceHandler implements RefactoringActionHandler, Elemen String interfaceName, MemberInfo[] selectedMembers, DocCommentPolicy javaDocPolicy) throws IncorrectOperationException { - aClass.getProject().getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC) + final Project project = aClass.getProject(); + project.getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC) .refactoringStarted(ExtractSuperClassUtil.REFACTORING_EXTRACT_SUPER_ID, ExtractSuperClassUtil.createBeforeData(aClass, selectedMembers)); final PsiClass anInterface = JavaDirectoryService.getInstance().createInterface(targetDir, interfaceName); try { PsiJavaCodeReferenceElement ref = ExtractSuperClassUtil.createExtendingReference(anInterface, aClass, selectedMembers); final PsiReferenceList referenceList = aClass.isInterface() ? aClass.getExtendsList() : aClass.getImplementsList(); assert referenceList != null; - referenceList.add(ref); + CodeStyleManager.getInstance(project).reformat(referenceList.add(ref)); PullUpProcessor pullUpHelper = new PullUpProcessor(aClass, anInterface, selectedMembers, javaDocPolicy); pullUpHelper.moveMembersToBase(); return anInterface; } finally { - aClass.getProject().getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC) + project.getMessageBus().syncPublisher(RefactoringEventListener.REFACTORING_EVENT_TOPIC) .refactoringDone(ExtractSuperClassUtil.REFACTORING_EXTRACT_SUPER_ID, ExtractSuperClassUtil.createAfterData(anInterface)); } } diff --git a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java index 8812398b4f75..7e6b86b732a8 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/extractSuperclass/ExtractSuperClassUtil.java @@ -95,10 +95,11 @@ public class ExtractSuperClassUtil { // make original class extend extracted superclass PsiJavaCodeReferenceElement ref = createExtendingReference(superclass, subclass, selectedMemberInfos); + final CodeStyleManager codeStyleManager = CodeStyleManager.getInstance(project); if (subClassExtends != null) { - subclass.getExtendsList().add(ref); + codeStyleManager.reformat(subclass.getExtendsList().add(ref)); } else if (subclass instanceof PsiAnonymousClass) { - ((PsiAnonymousClass)subclass).getBaseClassReference().replace(ref); + codeStyleManager.reformat(((PsiAnonymousClass)subclass).getBaseClassReference().replace(ref)); } PullUpProcessor pullUpHelper = new PullUpProcessor(subclass, superclass, selectedMemberInfos, diff --git a/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java new file mode 100644 index 000000000000..ed3dd7401cd6 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/Test.java @@ -0,0 +1,3 @@ +public class Test { + public B m(A a){return null;} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java new file mode 100644 index 000000000000..b0c6fc9e1314 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/after/TestSubclass.java @@ -0,0 +1,2 @@ +public class TestSubclass extends Test { +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java new file mode 100644 index 000000000000..ed3dd7401cd6 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractSuperClass/multipleTypeParameters/before/Test.java @@ -0,0 +1,3 @@ +public class Test { + public B m(A a){return null;} +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java index 8422ffed3b32..84aac46f44b9 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractSuperClassTest.java @@ -59,6 +59,10 @@ public class ExtractSuperClassTest extends RefactoringTestCase { doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class)); } + public void testMultipleTypeParameters() throws Exception { + doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class)); + } + public void testEmptyForeach() throws Exception { doTest("Test", "TestSubclass", new RefactoringTestUtil.MemberDescriptor("m", PsiMethod.class));