mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
pull up: ignore conflicts coming from access object when it is also moved (IDEA-117671)
This commit is contained in:
@@ -149,9 +149,10 @@ public class RefactoringConflictsUtil {
|
||||
PsiReferenceExpression refExpr = (PsiReferenceExpression)scope;
|
||||
PsiElement refElement = refExpr.resolve();
|
||||
if (refElement instanceof PsiMember) {
|
||||
if (!RefactoringHierarchyUtil.willBeInTargetClass(refElement, moving, targetClass, false)) {
|
||||
PsiExpression qualifier = refExpr.getQualifierExpression();
|
||||
PsiClass accessClass = (PsiClass)(qualifier != null ? PsiUtil.getAccessObjectClass(qualifier).getElement() : null);
|
||||
PsiExpression qualifier = refExpr.getQualifierExpression();
|
||||
PsiClass accessClass = (PsiClass)(qualifier != null ? PsiUtil.getAccessObjectClass(qualifier).getElement() : null);
|
||||
if (!RefactoringHierarchyUtil.willBeInTargetClass(refElement, moving, targetClass, false) &&
|
||||
(accessClass == null || !RefactoringHierarchyUtil.willBeInTargetClass(accessClass, moving, targetClass, false))) {
|
||||
checkAccessibility((PsiMember)refElement, context, accessClass, member, conflicts);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
import java.util.*;
|
||||
class A {}
|
||||
class B extends A {
|
||||
void fo<caret>o() {
|
||||
HM<String, String> hm = new HM<>();
|
||||
for (Map.Entry<String, String> stringStringEntry : hm.entrySet()) {}
|
||||
}
|
||||
private static class HM<K, V> extends HashMap<K, V>{}
|
||||
}
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
import java.util.*;
|
||||
class A {
|
||||
void foo() {
|
||||
HM<String, String> hm = new HM<>();
|
||||
for (Map.Entry<String, String> stringStringEntry : hm.entrySet()) {}
|
||||
}
|
||||
|
||||
private static class HM<K, V> extends HashMap<K, V>{}
|
||||
}
|
||||
class B extends A {
|
||||
}
|
||||
@@ -147,6 +147,10 @@ public class PullUpTest extends LightRefactoringTestCase {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
|
||||
}
|
||||
|
||||
public void testPublicMethodFromPrivateClassConflict() {
|
||||
doTest(false, new RefactoringTestUtil.MemberDescriptor("HM", PsiClass.class), new RefactoringTestUtil.MemberDescriptor("foo", PsiMethod.class));
|
||||
}
|
||||
|
||||
private void doTest(RefactoringTestUtil.MemberDescriptor... membersToFind) {
|
||||
doTest(true, membersToFind);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user