make method static: do not pass class param for static inner class (IDEA-90720)

This commit is contained in:
Anna Kozlova
2012-09-13 15:16:44 +04:00
parent 50745b4e9f
commit 4a7e7d24a8
3 changed files with 16 additions and 1 deletions
@@ -108,7 +108,7 @@ public class MakeStaticUtil {
PsiElement refElement = classReference.resolve();
if (refElement instanceof PsiClass) {
PsiClass hisClass = ((PsiClass) refElement).getContainingClass();
if (hisClass != originalMember && isPartOf(hisClass, containingClass)) {
if (hisClass != originalMember && isPartOf(hisClass, containingClass) && !((PsiClass)refElement).hasModifierProperty(PsiModifier.STATIC)) {
classRefs.add(new InternalUsageInfo(element, refElement));
}
}
@@ -0,0 +1,7 @@
class C {
private void f<caret>oo() {
Bar bar = new Bar();
}
static class Bar {}
}
@@ -19,6 +19,7 @@ import com.intellij.JavaTestUtil;
import com.intellij.codeInsight.TargetElementUtilBase;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiMethod;
import com.intellij.psi.PsiTypeParameterListOwner;
import com.intellij.refactoring.makeStatic.MakeMethodStaticProcessor;
import com.intellij.refactoring.makeStatic.MakeStaticUtil;
import com.intellij.refactoring.makeStatic.Settings;
@@ -176,6 +177,13 @@ public class MakeMethodStaticTest extends LightRefactoringTestCase {
configureByFile("/refactoring/makeMethodStatic/beforePreserveTypeParams.java");
performWithFields();
checkResultByFile("/refactoring/makeMethodStatic/afterPreserveTypeParams.java");
}
public void testInnerStaticClassUsed() throws Exception {
configureByFile("/refactoring/makeMethodStatic/beforeInnerStaticClassUsed.java");
PsiElement element = TargetElementUtilBase.findTargetElement(myEditor, TargetElementUtilBase.ELEMENT_NAME_ACCEPTED);
assertTrue(element instanceof PsiMethod);
assertFalse(MakeStaticUtil.isParameterNeeded((PsiMethod)element));
}
public void testPreserveParametersAlignment() throws Exception {