mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move members: update static imports when methods are overridden (IDEA-93741)
This commit is contained in:
@@ -238,7 +238,12 @@ public class RefactoringUtil {
|
||||
if (importList != null) {
|
||||
final PsiImportStaticStatement[] importStaticStatements = importList.getImportStaticStatements();
|
||||
for(PsiImportStaticStatement stmt: importStaticStatements) {
|
||||
if (!stmt.isOnDemand() && stmt.resolveTargetClass() == member.getContainingClass() && Comparing.strEqual(stmt.getReferenceName(), member.getName())) {
|
||||
final PsiClass containingClass = member.getContainingClass();
|
||||
final String referenceName = stmt.getReferenceName();
|
||||
if (!stmt.isOnDemand() && stmt.resolveTargetClass() == containingClass && Comparing.strEqual(referenceName, member.getName())) {
|
||||
if (member instanceof PsiMethod) {
|
||||
return containingClass.findMethodsByName(referenceName, false).length == 1;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package bar;
|
||||
|
||||
public class A {
|
||||
public static void foo() {}
|
||||
}
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package bar;
|
||||
|
||||
public class B {
|
||||
public static void foo(String s) {}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import bar.A;
|
||||
|
||||
class Usage {
|
||||
void bar() {
|
||||
A.foo();
|
||||
}
|
||||
}
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
package bar;
|
||||
|
||||
public class A {
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
package bar;
|
||||
|
||||
public class B {
|
||||
public static void foo() {}
|
||||
public static void foo(String s) {}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import static bar.B.foo;
|
||||
|
||||
class Usage {
|
||||
void bar() {
|
||||
foo();
|
||||
}
|
||||
}
|
||||
@@ -105,6 +105,10 @@ public class MoveMembersTest extends MultiFileTestCase {
|
||||
doTest("B", "A", 0);
|
||||
}
|
||||
|
||||
public void testStaticImportAndOverridenMethods() throws Exception {
|
||||
doTest("bar.B", "bar.A", 0);
|
||||
}
|
||||
|
||||
public void testWritableField() throws Exception {
|
||||
try {
|
||||
doTest("B", "A", 0);
|
||||
|
||||
Reference in New Issue
Block a user