From 43fd183f6e57d3720b651f9a1b33247d1071de2a Mon Sep 17 00:00:00 2001 From: "Anna.Kozlova" Date: Fri, 3 Feb 2017 11:37:39 +0100 Subject: [PATCH] optimize imports: instance members should not conflict via static imports (IDEA-167039) --- .../psi/impl/source/codeStyle/ImportHelper.java | 5 ++++- ...NonStaticElementsFromStaticConflictingMembers.java | 11 +++++++++++ ...ticElementsFromStaticConflictingMembers_after.java | 9 +++++++++ .../testSrc/com/intellij/psi/OptimizeImportsTest.java | 4 ++++ 4 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers.java create mode 100644 java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers_after.java diff --git a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java index c5ba0e3bd652..4f9bade44f71 100644 --- a/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java +++ b/java/java-impl/src/com/intellij/psi/impl/source/codeStyle/ImportHelper.java @@ -314,7 +314,10 @@ public class ImportHelper{ else if ((aClass = facade.findClass(onDemand, resolveScope)) != null) { // import static foo.package1.Class1.*; if (isStatic) { PsiMember[][] membersArray = {aClass.getInnerClasses(), aClass.getMethods(), aClass.getFields()}; - Set set = Arrays.stream(membersArray).flatMap(Arrays::stream).map(PsiMember::getName).collect(toSet()); + Set set = Arrays.stream(membersArray) + .flatMap(Arrays::stream) + .filter(member -> member.hasModifierProperty(PsiModifier.STATIC)) + .map(PsiMember::getName).collect(toSet()); classNames.put(onDemand, set); } else { diff --git a/java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers.java b/java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers.java new file mode 100644 index 000000000000..051b6d9195f9 --- /dev/null +++ b/java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers.java @@ -0,0 +1,11 @@ +import static java.lang.String.format; +import static java.lang.String.valueOf; +import static java.lang.String.copyValueOf; + +class OptimizeImport { + public static void main(String[] args) { + format("foo"); + valueOf(1); + copyValueOf(new char[0]); + } +} \ No newline at end of file diff --git a/java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers_after.java b/java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers_after.java new file mode 100644 index 000000000000..fd02ffbf3657 --- /dev/null +++ b/java/java-tests/testData/psi/optimizeImports/ExcludeNonStaticElementsFromStaticConflictingMembers_after.java @@ -0,0 +1,9 @@ +import static java.lang.String.*; + +class OptimizeImport { + public static void main(String[] args) { + format("foo"); + valueOf(1); + copyValueOf(new char[0]); + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java b/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java index 18998d1b1a51..42f24ac5517d 100644 --- a/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java @@ -53,6 +53,10 @@ public class OptimizeImportsTest extends OptimizeImportsTestCase { doTest(); } + public void testExcludeNonStaticElementsFromStaticConflictingMembers() throws Exception { + doTest(); + } + private void doTest() throws Exception { doTest(".java"); }