mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move to inner: rebind imports first in order to prevent fqns (IDEA-39290)
This commit is contained in:
+7
@@ -128,6 +128,13 @@ public class MoveClassToInnerProcessor extends BaseRefactoringProcessor {
|
||||
final List<PsiElement> importStatements = new ArrayList<PsiElement>();
|
||||
if (!CodeStyleSettingsManager.getSettings(myProject).INSERT_INNER_CLASS_IMPORTS) {
|
||||
usages = filterUsagesInImportStatements(usages, importStatements);
|
||||
} else {
|
||||
//rebind imports first
|
||||
Arrays.sort(usages, new Comparator<UsageInfo>() {
|
||||
public int compare(UsageInfo o1, UsageInfo o2) {
|
||||
return PsiUtil.BY_POSITION.compare(o1.getElement(), o2.getElement());
|
||||
}
|
||||
});
|
||||
}
|
||||
saveNonCodeUsages(usages);
|
||||
final Map<PsiElement, PsiElement> oldToNewElementsMapping = new HashMap<PsiElement, PsiElement>();
|
||||
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package pack2;
|
||||
|
||||
public class A {
|
||||
public static class Class1 {
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package packUser;
|
||||
|
||||
import pack2.A.Class1;
|
||||
|
||||
public class Class2 {
|
||||
Class1 myClass1;
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package pack1;
|
||||
|
||||
public class Class1 {
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package pack2;
|
||||
|
||||
public class A {
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package packUser;
|
||||
|
||||
import pack1.Class1;
|
||||
|
||||
public class Class2 {
|
||||
Class1 myClass1;
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.impl.source.PostprocessReformattingAspect;
|
||||
import com.intellij.psi.search.ProjectScope;
|
||||
import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassToInnerProcessor;
|
||||
@@ -35,6 +36,17 @@ public class MoveClassToInnerTest extends CodeInsightTestCase {
|
||||
doTest(new String[] { "pack1.Class1" }, "pack2.A");
|
||||
}
|
||||
|
||||
public void testInsertInnerClassImport() throws Exception {
|
||||
final boolean imports = CodeStyleSettingsManager.getSettings(myProject).INSERT_INNER_CLASS_IMPORTS;
|
||||
try {
|
||||
CodeStyleSettingsManager.getSettings(myProject).INSERT_INNER_CLASS_IMPORTS = true;
|
||||
doTest(new String[] { "pack1.Class1" }, "pack2.A");
|
||||
}
|
||||
finally {
|
||||
CodeStyleSettingsManager.getSettings(myProject).INSERT_INNER_CLASS_IMPORTS = imports;
|
||||
}
|
||||
}
|
||||
|
||||
public void testSimultaneousMove() throws Exception {
|
||||
doTest(new String[] { "pack1.Class1", "pack0.Class0" }, "pack2.A");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user