mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
rename: qualify to avoid undiagnosed shadowing ( IDEA-20634 )
This commit is contained in:
@@ -139,6 +139,12 @@ public class RenameJavaClassProcessor extends RenamePsiElementProcessor {
|
||||
PsiClass parent = (PsiClass)aClass.getParent();
|
||||
Collection<PsiClass> inheritors = ClassInheritorsSearch.search(parent, parent.getUseScope(), true).findAll();
|
||||
for (PsiClass inheritor : inheritors) {
|
||||
if (newName.equals(inheritor.getName())) {
|
||||
final ClassCollisionsDetector classCollisionsDetector = new ClassCollisionsDetector(aClass);
|
||||
for (PsiReference reference : ReferencesSearch.search(inheritor, new LocalSearchScope(inheritor))) {
|
||||
classCollisionsDetector.addClassCollisions(reference.getElement(), newName, result);
|
||||
}
|
||||
}
|
||||
PsiClass[] inners = inheritor.getInnerClasses();
|
||||
for (PsiClass inner : inners) {
|
||||
if (newName.equals(inner.getName())) {
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
class A {
|
||||
class <caret>B {
|
||||
int x = 42;
|
||||
}
|
||||
}
|
||||
|
||||
public class D {
|
||||
static class C extends A {
|
||||
int x = 23;
|
||||
|
||||
int m() {
|
||||
return C.this.x;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(new C().m());
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
class A {
|
||||
class C {
|
||||
int x = 42;
|
||||
}
|
||||
}
|
||||
|
||||
public class D {
|
||||
static class C extends A {
|
||||
int x = 23;
|
||||
|
||||
int m() {
|
||||
return D.C.this.x;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(new C().m());
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
class A {
|
||||
static class <caret>B {
|
||||
static int x = 42;
|
||||
}
|
||||
}
|
||||
|
||||
public class D {
|
||||
static class C extends A {
|
||||
static int x = 23;
|
||||
|
||||
static int m() {
|
||||
return C.x;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(C.m());
|
||||
}
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
class A {
|
||||
static class C {
|
||||
static int x = 42;
|
||||
}
|
||||
}
|
||||
|
||||
public class D {
|
||||
static class C extends A {
|
||||
static int x = 23;
|
||||
|
||||
static int m() {
|
||||
return D.C.x;
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
System.out.println(D.C.m());
|
||||
}
|
||||
}
|
||||
@@ -160,6 +160,14 @@ public class RenameCollisionsTest extends LightCodeInsightTestCase {
|
||||
doTest("P");
|
||||
}
|
||||
|
||||
public void testRenameInnerInSuperClass() throws Exception {
|
||||
doTest("C");
|
||||
}
|
||||
|
||||
public void testRenameInnerInSuperClassStatic() throws Exception {
|
||||
doTest("C");
|
||||
}
|
||||
|
||||
private void doTest(final String newName) throws Exception {
|
||||
configureByFile(BASE_PATH + getTestName(false) + ".java");
|
||||
PsiElement element = TargetElementUtilBase
|
||||
|
||||
Reference in New Issue
Block a user