From 6b58c10ee27d7c66dab09a09574caf78b3424414 Mon Sep 17 00:00:00 2001 From: "Egor.Ushakov" Date: Fri, 26 Feb 2016 20:59:30 +0300 Subject: [PATCH] IDEA-151861 ExtractMethodObject should not move static methods into created inner class - honor make static --- .../ExtractMethodObjectProcessor.java | 4 ++-- .../WithPrivateStaticMethodUsed2.java | 9 +++++++++ .../WithPrivateStaticMethodUsed2.java.after | 15 +++++++++++++++ .../refactoring/ExtractMethodObjectTest.java | 4 ++++ 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java create mode 100644 java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java.after diff --git a/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java b/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java index d13a4c7d3685..c0ced7f5d7e3 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractMethodObjectProcessor.java @@ -131,8 +131,8 @@ public class ExtractMethodObjectProcessor extends BaseRefactoringProcessor { for (PsiMethod usedMethod : usedMethods) { - PsiModifierList modifiers = usedMethod.getModifierList(); - if (modifiers.hasModifierProperty(PsiModifier.PRIVATE) && !modifiers.hasModifierProperty(PsiModifier.STATIC)) { + if (usedMethod.hasModifierProperty(PsiModifier.PRIVATE) && + (!usedMethod.hasModifierProperty(PsiModifier.STATIC) || myExtractProcessor.isStatic())) { PsiMethod toMove = usedMethod; for (PsiReference reference : ReferencesSearch.search(usedMethod)) { if (!PsiTreeUtil.isAncestor(getMethod(), reference.getElement(), false)) { diff --git a/java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java b/java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java new file mode 100644 index 000000000000..73add1aef0a8 --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java @@ -0,0 +1,9 @@ +public class XXX { + static void foo() { + int i = 0 ; + bar(i); + System.out.println(i); + } + + private static void bar(int i){} +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java.after b/java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java.after new file mode 100644 index 000000000000..14d9a169a80c --- /dev/null +++ b/java/java-tests/testData/refactoring/extractMethodObject/WithPrivateStaticMethodUsed2.java.after @@ -0,0 +1,15 @@ +public class XXX { + static void foo() { + InnerClass.invoke(); + } + + private static class InnerClass { + private static void invoke() { + int i = 0 ; + bar(i); + System.out.println(i); + } + + private static void bar(int i){} + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java index 02b8eecfc1b3..fcfd04b125ba 100644 --- a/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java +++ b/java/java-tests/testSrc/com/intellij/refactoring/ExtractMethodObjectTest.java @@ -137,6 +137,10 @@ public class ExtractMethodObjectTest extends LightRefactoringTestCase { doTest(); } + public void testWithPrivateStaticMethodUsed2() throws Exception { + doTest(); + } + public void testWithPrivateMethodWhichCantBeMoved() throws Exception { doTest(); }