mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
copy classes: retarget refs in extends lists (IDEA-150234)
This commit is contained in:
@@ -493,27 +493,9 @@ public class CopyClassesHandler extends CopyHandlerDelegateBase {
|
||||
final Map<PsiJavaCodeReferenceElement, PsiElement> rebindMap = new LinkedHashMap<PsiJavaCodeReferenceElement, PsiElement>();
|
||||
element.accept(new JavaRecursiveElementVisitor(){
|
||||
@Override
|
||||
public void visitReferenceExpression(PsiReferenceExpression expression) {
|
||||
decodeRef(expression, oldToNewMap, rebindMap);
|
||||
super.visitReferenceExpression(expression);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitNewExpression(PsiNewExpression expression) {
|
||||
super.visitNewExpression(expression);
|
||||
final PsiJavaCodeReferenceElement referenceElement = expression.getClassReference();
|
||||
if (referenceElement != null) {
|
||||
decodeRef(referenceElement, oldToNewMap, rebindMap);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void visitTypeElement(PsiTypeElement type) {
|
||||
super.visitTypeElement(type);
|
||||
final PsiJavaCodeReferenceElement referenceElement = type.getInnermostComponentReferenceElement();
|
||||
if (referenceElement != null) {
|
||||
decodeRef(referenceElement, oldToNewMap, rebindMap);
|
||||
}
|
||||
public void visitReferenceElement(PsiJavaCodeReferenceElement reference) {
|
||||
super.visitReferenceElement(reference);
|
||||
decodeRef(reference, oldToNewMap, rebindMap);
|
||||
}
|
||||
});
|
||||
for (Map.Entry<PsiJavaCodeReferenceElement, PsiElement> entry : rebindMap.entrySet()) {
|
||||
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package p1;
|
||||
class X {
|
||||
class Y extends X {}
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package p2;
|
||||
class X {
|
||||
class Y extends X {}
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package p1;
|
||||
class X {
|
||||
class Y extends X {}
|
||||
}
|
||||
@@ -98,6 +98,10 @@ public class CopyClassTest extends CodeInsightTestCase {
|
||||
doMultifileTest();
|
||||
}
|
||||
|
||||
public void testPackageLocalAndExtends() throws Exception {
|
||||
doMultifileTest();
|
||||
}
|
||||
|
||||
//copy all classes from p1 -> p2
|
||||
private void doMultifileTest() throws Exception {
|
||||
String root = JavaTestUtil.getJavaTestDataPath() + "/refactoring/copyClass/multifile/" + getTestName(true);
|
||||
|
||||
Reference in New Issue
Block a user