refactoring conflicts: pass file context

to check refactorings inside one top level class (IDEA-155681)
This commit is contained in:
Anna.Kozlova
2017-12-08 19:01:50 +01:00
parent 86139931ec
commit 7cf1fa2bd7
4 changed files with 33 additions and 1 deletions
@@ -206,7 +206,7 @@ public class RefactoringConflictsUtil {
@Nullable PsiClass accessClass,
PsiMember member,
MultiMap<PsiElement, String> conflicts) {
if (!PsiUtil.isAccessible(refMember, newContext, accessClass)) {
if (!JavaPsiFacade.getInstance(newContext.getProject()).getResolveHelper().isAccessible(refMember, refMember.getModifierList(), newContext, accessClass, newContext)) {
String message = RefactoringBundle.message("0.is.1.and.will.not.be.accessible.from.2.in.the.target.class",
RefactoringUIUtil.getDescription(refMember, true),
VisibilityUtil.getVisibilityStringToDisplay(refMember),
@@ -0,0 +1,15 @@
class Outer {
class A {
private void foo() {}
private int i;
final void t<caret>est() {
foo();
System.out.println(i);
}
}
class B extends A {}
}
@@ -0,0 +1,16 @@
class Outer {
class A {
private void foo() {}
private int i;
}
class B extends A {
final void test() {
foo();
System.out.println(i);
}
}
}
@@ -41,6 +41,7 @@ public class PushDownTest extends LightRefactoringTestCase {
public void testFieldTypeParameter() { doTest(); }
public void testBodyTypeParameter() { doTest(); }
public void testDisagreeTypeParameter() { doTest(true); }
public void testInaccessibleInTheSameTopLevel() { doTest(true); }
public void testStaticMethodNoConflictCallingOnQualifier() { doTest(); }
public void testFieldAndReferencedClass() { doTest(); }
public void testSecondNormalizedField() { doTest(); }