From 86139931ec1b1cdb4821c1ca4bc7295db9cbb7c8 Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Fri, 8 Dec 2017 15:27:37 +0100 Subject: [PATCH] push down: ignore conflicts for static methods on explicit qualifier (IDEA-155641) --- .../memberPushDown/PushDownConflicts.java | 1 + .../StaticMethodNoConflictCallingOnQualifier.java | 12 ++++++++++++ ...ticMethodNoConflictCallingOnQualifier_after.java | 13 +++++++++++++ .../com/intellij/java/refactoring/PushDownTest.java | 1 + 4 files changed, 27 insertions(+) create mode 100644 java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier.java create mode 100644 java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier_after.java diff --git a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java index 95ab14afed66..f42c6a1406e0 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPushDown/PushDownConflicts.java @@ -112,6 +112,7 @@ public class PushDownConflicts { } Members: for (PsiMember member : myMovedMembers) { + if (member.hasModifierProperty(PsiModifier.STATIC)) continue; for (PsiReference ref : ReferencesSearch.search(member, member.getResolveScope(), false)) { final PsiElement element = ref.getElement(); if (element instanceof PsiReferenceExpression) { diff --git a/java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier.java b/java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier.java new file mode 100644 index 000000000000..f56cf04340c3 --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier.java @@ -0,0 +1,12 @@ + +interface I { + static void foo() {} +} + +class C implements I { } + +class Usage { + void bar() { + I.foo(); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier_after.java b/java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier_after.java new file mode 100644 index 000000000000..08c2cdbfdede --- /dev/null +++ b/java/java-tests/testData/refactoring/pushDown/StaticMethodNoConflictCallingOnQualifier_after.java @@ -0,0 +1,13 @@ + +interface I { +} + +class C implements I { + public static void foo() {} +} + +class Usage { + void bar() { + C.foo(); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java b/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java index e734e2d5ce66..9e9658bcc5d0 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/PushDownTest.java @@ -41,6 +41,7 @@ public class PushDownTest extends LightRefactoringTestCase { public void testFieldTypeParameter() { doTest(); } public void testBodyTypeParameter() { doTest(); } public void testDisagreeTypeParameter() { doTest(true); } + public void testStaticMethodNoConflictCallingOnQualifier() { doTest(); } public void testFieldAndReferencedClass() { doTest(); } public void testSecondNormalizedField() { doTest(); } public void testFieldAndStaticReferencedClass() { doTest(); }