IDEA-151861 ExtractMethodObject should not move static methods into created inner class

This commit is contained in:
Egor.Ushakov
2016-02-26 20:01:51 +03:00
parent cb57b1027c
commit bcfc1fe10f
4 changed files with 46 additions and 1 deletions
@@ -131,7 +131,8 @@ public class ExtractMethodObjectProcessor extends BaseRefactoringProcessor {
for (PsiMethod usedMethod : usedMethods) {
if (usedMethod.getModifierList().hasModifierProperty(PsiModifier.PRIVATE)) {
PsiModifierList modifiers = usedMethod.getModifierList();
if (modifiers.hasModifierProperty(PsiModifier.PRIVATE) && !modifiers.hasModifierProperty(PsiModifier.STATIC)) {
PsiMethod toMove = usedMethod;
for (PsiReference reference : ReferencesSearch.search(usedMethod)) {
if (!PsiTreeUtil.isAncestor(getMethod(), reference.getElement(), false)) {
@@ -0,0 +1,9 @@
public class XXX {
void f<caret>oo() {
int i = 0 ;
bar(i);
System.out.println(i);
}
private static void bar(int i){}
}
@@ -0,0 +1,15 @@
public class XXX {
void foo() {
new InnerClass().invoke();
}
private static void bar(int i){}
private class InnerClass {
public void invoke() {
int i = 0 ;
bar(i);
System.out.println(i);
}
}
}
@@ -1,3 +1,19 @@
/*
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* User: anna
* Date: 06-May-2008
@@ -117,6 +133,10 @@ public class ExtractMethodObjectTest extends LightRefactoringTestCase {
doTest();
}
public void testWithPrivateStaticMethodUsed() throws Exception {
doTest();
}
public void testWithPrivateMethodWhichCantBeMoved() throws Exception {
doTest();
}