extract class: do not warn about usages of statics in class initializers, preserve static imports (IDEA-106017)

This commit is contained in:
anna
2013-04-23 16:53:58 +02:00
parent 1b0f032a13
commit 6100f5a690
8 changed files with 58 additions and 5 deletions
@@ -0,0 +1,7 @@
package foo;
public class Extracted {
public static <T> T foo() {
return null;
}
}
@@ -0,0 +1,3 @@
package foo;
class Test {
}
@@ -0,0 +1,8 @@
package foo;
import static foo.Extracted.foo;
class Usage {
{
foo();
}
}
@@ -0,0 +1,4 @@
package foo;
class Test {
public static <T> T foo() { return null; }
}
@@ -0,0 +1,8 @@
package foo;
import static foo.Test.foo;
class Usage {
{
foo();
}
}
@@ -6,6 +6,7 @@ package com.intellij.refactoring;
import com.intellij.JavaTestUtil;
import com.intellij.openapi.fileEditor.FileDocumentManager;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiClass;
@@ -42,10 +43,16 @@ public class ExtractClassTest extends MultiFileTestCase{
}
private void doTestMethod(final String methodName, final String conflicts) throws Exception {
doTestMethod(methodName, conflicts, "Test");
}
private void doTestMethod(final String methodName,
final String conflicts,
final String qualifiedName) throws Exception {
doTest(new PerformAction() {
@Override
public void performAction(final VirtualFile rootDir, final VirtualFile rootAfter) throws Exception {
PsiClass aClass = myJavaFacade.findClass("Test", GlobalSearchScope.projectScope(myProject));
PsiClass aClass = myJavaFacade.findClass(qualifiedName, GlobalSearchScope.projectScope(myProject));
assertNotNull("Class Test not found", aClass);
@@ -105,6 +112,10 @@ public class ExtractClassTest extends MultiFileTestCase{
doTestMethod();
}
public void testStaticImports() throws Exception {
doTestMethod("foo", null, "foo.Test");
}
public void testNoConstructorParams() throws Exception {
doTestFieldAndMethod();
}
@@ -165,7 +176,8 @@ public class ExtractClassTest extends MultiFileTestCase{
private static void doTest(final PsiClass aClass, final ArrayList<PsiMethod> methods, final ArrayList<PsiField> fields, final String conflicts,
boolean generateGettersSetters) {
try {
ExtractClassProcessor processor = new ExtractClassProcessor(aClass, fields, methods, new ArrayList<PsiClass>(), "", null, "Extracted", null, generateGettersSetters, Collections.<MemberInfo>emptyList());
ExtractClassProcessor processor = new ExtractClassProcessor(aClass, fields, methods, new ArrayList<PsiClass>(), StringUtil.getPackageName(aClass.getQualifiedName()), null,
"Extracted", null, generateGettersSetters, Collections.<MemberInfo>emptyList());
processor.run();
LocalFileSystem.getInstance().refresh(false);
FileDocumentManager.getInstance().saveAllDocuments();