mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move inner to upper level: don't remove qualifier from inner types used in extends/implements list (IDEA-140839)
This commit is contained in:
@@ -20,8 +20,6 @@ import com.intellij.codeInsight.CodeInsightUtilCore;
|
||||
import com.intellij.ide.util.EditorHelper;
|
||||
import com.intellij.lang.findUsages.DescriptiveNameUtil;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.fileEditor.OpenFileDescriptor;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
@@ -38,7 +36,9 @@ import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.move.MoveCallback;
|
||||
import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesUtil;
|
||||
import com.intellij.refactoring.rename.RenameUtil;
|
||||
import com.intellij.refactoring.util.*;
|
||||
import com.intellij.refactoring.util.ConflictsUtil;
|
||||
import com.intellij.refactoring.util.NonCodeUsageInfo;
|
||||
import com.intellij.refactoring.util.RefactoringUIUtil;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageViewDescriptor;
|
||||
import com.intellij.util.Function;
|
||||
@@ -193,8 +193,11 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
|
||||
PsiJavaCodeReferenceElement parentRef = (PsiJavaCodeReferenceElement)element.getParent();
|
||||
PsiElement parentRefElement = parentRef.resolve();
|
||||
if (parentRefElement instanceof PsiClass) { // reference to inner class inside our inner
|
||||
parentRef.getQualifier().delete();
|
||||
continue;
|
||||
final PsiReferenceList referenceList = PsiTreeUtil.getTopmostParentOfType(parentRef, PsiReferenceList.class);
|
||||
if (referenceList == null || referenceList.getParent() != newClass) {
|
||||
parentRef.getQualifier().delete();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
ref.bindToElement(newClass);
|
||||
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package p;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
abstract class A implements List<A.B> {
|
||||
static class B {
|
||||
}
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package p;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package p;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class Main {
|
||||
static abstract class A implements List<A.B> {
|
||||
static class B {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -101,6 +101,10 @@ public class MoveInnerTest extends MultiFileTestCase {
|
||||
doTest(createAction("p.A.E", "E", false, null, false, false, null));
|
||||
}
|
||||
|
||||
public void testInnerInnerClassUsedInTypeParams() throws Exception {
|
||||
doTest(createAction("p.Main.A", "A", false, null, false, false, null));
|
||||
}
|
||||
|
||||
public void testEnumConstructorVisibility() throws Exception { // IDEADEV-28619
|
||||
doTest(createAction("p.A.E", "E", false, null, false, false, "p2"));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user