From 418d31e9e8535d0412a4d5298d766e70f005ccea Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Fri, 13 Oct 2017 15:30:41 +0200 Subject: [PATCH] Java static imports are not classified as imports in Find Usages (IDEA-180332) --- .../usages/impl/rules/JavaUsageTypeProvider.java | 2 ++ .../testData/psi/usages/StaticFieldUsageInImport.java | 3 +++ .../testData/psi/usages/StaticMethodUsageInImport.java | 4 ++++ .../java/psi/usages/JavaUsageTypeProviderTest.java | 10 ++++++++++ 4 files changed, 19 insertions(+) create mode 100644 java/java-tests/testData/psi/usages/StaticFieldUsageInImport.java create mode 100644 java/java-tests/testData/psi/usages/StaticMethodUsageInImport.java diff --git a/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java b/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java index f37a1c2a5742..bfe944e54f27 100644 --- a/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java +++ b/java/java-impl/src/com/intellij/usages/impl/rules/JavaUsageTypeProvider.java @@ -240,6 +240,8 @@ public class JavaUsageTypeProvider implements UsageTypeProviderEx { } } + if (PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class, false) != null) return UsageType.CLASS_IMPORT; + return null; } diff --git a/java/java-tests/testData/psi/usages/StaticFieldUsageInImport.java b/java/java-tests/testData/psi/usages/StaticFieldUsageInImport.java new file mode 100644 index 000000000000..a6ace30445c6 --- /dev/null +++ b/java/java-tests/testData/psi/usages/StaticFieldUsageInImport.java @@ -0,0 +1,3 @@ +import static Foo.STATIC_FIELD; +public class StaticMethodCallInImport { +} \ No newline at end of file diff --git a/java/java-tests/testData/psi/usages/StaticMethodUsageInImport.java b/java/java-tests/testData/psi/usages/StaticMethodUsageInImport.java new file mode 100644 index 000000000000..dbf4588efc10 --- /dev/null +++ b/java/java-tests/testData/psi/usages/StaticMethodUsageInImport.java @@ -0,0 +1,4 @@ +import static Foo.staticMethod; +class StaticMethodUsageInImport { + { staticMethod(); } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/java/psi/usages/JavaUsageTypeProviderTest.java b/java/java-tests/testSrc/com/intellij/java/psi/usages/JavaUsageTypeProviderTest.java index 255df3c36584..5d983e5a5717 100644 --- a/java/java-tests/testSrc/com/intellij/java/psi/usages/JavaUsageTypeProviderTest.java +++ b/java/java-tests/testSrc/com/intellij/java/psi/usages/JavaUsageTypeProviderTest.java @@ -43,6 +43,16 @@ public class JavaUsageTypeProviderTest extends LightCodeInsightFixtureTestCase { assertUsageType(UsageType.CLASS_STATIC_MEMBER_ACCESS, myFixture.findClass("Foo")); } + public void testStaticFieldUsageInImport() { + myFixture.configureByFiles("StaticFieldUsageInImport.java", "Foo.java"); + assertUsageType(UsageType.CLASS_IMPORT, myFixture.findClass("Foo")); + } + + public void testStaticMethodUsageInImport() { + myFixture.configureByFiles("StaticMethodUsageInImport.java", "Foo.java"); + assertUsageType(UsageType.CLASS_IMPORT, myFixture.findClass("Foo")); + } + private void assertUsageType(UsageType expected, PsiClass target) { UsageTarget[] targets = {new PsiElement2UsageTargetAdapter(target)}; PsiElement element = myFixture.getReferenceAtCaretPositionWithAssertion().getElement();