From 3d5df4668dd718f944887215d181e8350521af08 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 24 Aug 2015 13:37:21 +0300 Subject: [PATCH] pull up: ensure abstract method contains non-contradicting modifiers (IDEA-144043) --- .../src/com/intellij/refactoring/util/RefactoringUtil.java | 7 ++++++- .../refactoring/pullUp/PullUpAsAbstractInClass.java | 2 +- .../refactoring/pullUp/PullUpAsAbstractInClass_after.java | 2 +- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java index 74771341eb26..59493b2af0a6 100644 --- a/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java +++ b/java/java-impl/src/com/intellij/refactoring/util/RefactoringUtil.java @@ -702,6 +702,7 @@ public class RefactoringUtil { if (!targetClass.isInterface()) { PsiUtil.setModifierProperty(targetClass, PsiModifier.ABSTRACT, true); + prepareForAbstract(method); } else { prepareForInterface(method); @@ -717,10 +718,14 @@ public class RefactoringUtil { } private static void prepareForInterface(PsiMethod method) { + PsiUtil.setModifierProperty(method, PsiModifier.PUBLIC, false); + prepareForAbstract(method); + } + + private static void prepareForAbstract(PsiMethod method) { PsiUtil.setModifierProperty(method, PsiModifier.FINAL, false); PsiUtil.setModifierProperty(method, PsiModifier.SYNCHRONIZED, false); PsiUtil.setModifierProperty(method, PsiModifier.NATIVE, false); - PsiUtil.setModifierProperty(method, PsiModifier.PUBLIC, false); removeFinalParameters(method); } diff --git a/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass.java b/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass.java index b206e074523c..e85960397a3f 100644 --- a/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass.java +++ b/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass.java @@ -1,4 +1,4 @@ class A {} class B extends A { - public void test(){} + public final synchronized void test(){} } \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass_after.java b/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass_after.java index 56c9eeb44abf..bd6da61cfc28 100644 --- a/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass_after.java +++ b/java/java-tests/testData/refactoring/pullUp/PullUpAsAbstractInClass_after.java @@ -3,5 +3,5 @@ abstract class A { } class B extends A { @Override - public void test(){} + public final synchronized void test(){} } \ No newline at end of file