mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move to inner: ignore package local access if class was moved to interface (IDEA-39296)
This commit is contained in:
+1
-1
@@ -353,7 +353,7 @@ public class MoveClassToInnerProcessor extends BaseRefactoringProcessor {
|
||||
private boolean isInaccessibleFromTarget(final PsiElement element, final String visibility) {
|
||||
final PsiPackage elementPackage = JavaDirectoryService.getInstance().getPackage(element.getContainingFile().getContainingDirectory());
|
||||
return !PsiUtil.isAccessible(myTargetClass, element, null) ||
|
||||
(visibility.equals(PsiModifier.PACKAGE_LOCAL) && !Comparing.equal(elementPackage, myTargetPackage));
|
||||
(!myTargetClass.isInterface() && visibility.equals(PsiModifier.PACKAGE_LOCAL) && !Comparing.equal(elementPackage, myTargetPackage));
|
||||
}
|
||||
|
||||
private void detectInaccessibleMemberUsages(final ConflictsCollector collector) {
|
||||
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
package pack1;
|
||||
|
||||
import pack2.A;
|
||||
|
||||
class Usage {
|
||||
A.Class1 cl1;
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package pack2;
|
||||
|
||||
public interface A {
|
||||
static class Class1 {
|
||||
}
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package pack1;
|
||||
|
||||
class Class1 {
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package pack1;
|
||||
class Usage {
|
||||
Class1 cl1;
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package pack2;
|
||||
|
||||
public interface A {
|
||||
}
|
||||
@@ -79,6 +79,10 @@ public class MoveClassToInnerTest extends CodeInsightTestCase {
|
||||
doTest(new String[] { "pack1.Class1" }, "pack1.A");
|
||||
}
|
||||
|
||||
public void testLocallyUsedPackageLocalToPublicInterface() throws Exception {
|
||||
doTest(new String[]{"pack1.Class1"}, "pack2.A");
|
||||
}
|
||||
|
||||
public void testPackageLocalClass() throws Exception {
|
||||
doTestConflicts("pack1.Class1", "pack2.A", "Field <b><code>Class1.c2</code></b> uses a package-local class <b><code>pack1.Class2</code></b>.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user