move instance: do not warn about self references

This commit is contained in:
anna
2012-04-06 15:01:10 +02:00
parent 8b81df9ef0
commit 289f64b764
5 changed files with 25 additions and 1 deletions
@@ -337,7 +337,7 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
super.visitReferenceElement(reference);
final PsiElement resolve = reference.resolve();
if (resolve instanceof PsiMember) {
if (PsiTreeUtil.isAncestor(myOuterClass, resolve, true) && !PsiTreeUtil.isAncestor(myInnerClass, resolve, true)) {
if (PsiTreeUtil.isAncestor(myOuterClass, resolve, true) && !PsiTreeUtil.isAncestor(myInnerClass, resolve, false)) {
if (becomesInaccessible((PsiMember)resolve)) {
registerConflict(reference, resolve, reported, conflicts);
}
@@ -0,0 +1,4 @@
package p;
class A {
}
@@ -0,0 +1,7 @@
package p;
class B {
public static B create() {
return new B();
}
}
@@ -0,0 +1,9 @@
package p;
class A {
private static class B {
public static B create() {
return new B();
}
}
}
@@ -56,6 +56,10 @@ public class MoveInnerTest extends MultiFileTestCase {
}
}
public void testInnerClassSelfRef() throws Exception {
doTest(createAction("p.A.B", "B", false, null, false, false, null));
}
public void testScr30106() throws Exception {
doTest(createAction("p.A.B", "B", true, "outer", false, false, null));
}