mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move inner: check protected accessibility in respect with class hierarchy (IDEA-154628)
This commit is contained in:
@@ -29,6 +29,7 @@ import com.intellij.psi.codeStyle.JavaCodeStyleManager;
|
||||
import com.intellij.psi.codeStyle.VariableKind;
|
||||
import com.intellij.psi.search.LocalSearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.RefactoringBundle;
|
||||
@@ -390,6 +391,10 @@ public class MoveInnerProcessor extends BaseRefactoringProcessor {
|
||||
final String visibilityModifier = VisibilityUtil.getVisibilityModifier(element.getModifierList());
|
||||
if (PsiModifier.PRIVATE.equals(visibilityModifier)) return true;
|
||||
if (PsiModifier.PUBLIC.equals(visibilityModifier)) return false;
|
||||
if (PsiModifier.PROTECTED.equals(visibilityModifier) &&
|
||||
InheritanceUtil.isInheritorOrSelf(myInnerClass, myOuterClass, true)) {
|
||||
return false;
|
||||
}
|
||||
final JavaPsiFacade psiFacade = JavaPsiFacade.getInstance(myProject);
|
||||
if (myTargetContainer instanceof PsiDirectory) {
|
||||
final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage((PsiDirectory)myTargetContainer);
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package p;
|
||||
|
||||
import p.b.A;
|
||||
|
||||
public class B extends A {
|
||||
private B() {
|
||||
System.out.println("Constructor");
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package p.b;
|
||||
|
||||
class A {
|
||||
protected A() {
|
||||
}
|
||||
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package p.b;
|
||||
|
||||
class A {
|
||||
protected A() {
|
||||
}
|
||||
|
||||
private class B extends A {
|
||||
private B() {
|
||||
System.out.println("Constructor");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -85,6 +85,10 @@ public class MoveInnerTest extends MultiFileTestCase {
|
||||
doTest(createAction("p.A.B", "B", false, null, false, false, null));
|
||||
}
|
||||
|
||||
public void testConstructorProtectedVisibility() throws Exception { // IDEADEV-19561
|
||||
doTest(createAction("p.b.A.B", "B", false, null, false, false, "p"));
|
||||
}
|
||||
|
||||
public void testConstructorUtilClassVisibility() throws Exception {
|
||||
doTest(createAction("p.A.B", "B", false, null, false, false, null));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user