From bfecda5998c69a830b16dbde6156da4a164000c6 Mon Sep 17 00:00:00 2001 From: anna Date: Tue, 20 Nov 2012 14:30:34 +0100 Subject: [PATCH] optimize imports: do not skip static imports in favor for simple imports (IDEA-95276) --- .../impl/source/codeStyle/ImportHelper.java | 7 ++-- .../StaticImportsToOptimizeMixed.java | 41 +++++++++++++++++++ .../StaticImportsToOptimizeMixed_after.java | 37 +++++++++++++++++ .../com/intellij/psi/OptimizeImportsTest.java | 1 + 4 files changed, 83 insertions(+), 3 deletions(-) create mode 100644 java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed.java create mode 100644 java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed_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 c85b542a0d13..ae1e9773bc8c 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 @@ -310,7 +310,7 @@ public class ImportHelper{ private static StringBuilder buildImportListText(@NotNull List> names, @NotNull final Set packagesOrClassesToImportOnDemand, @NotNull final Set namesToUseSingle) { - final Set importedPackagesOrClasses = new THashSet(); + final Set> importedPackagesOrClasses = new THashSet>(); @NonNls final StringBuilder buffer = new StringBuilder(); for (Pair pair : names) { String name = pair.getFirst(); @@ -321,11 +321,12 @@ public class ImportHelper{ if (useOnDemand && namesToUseSingle.remove(name)) { useOnDemand = false; } - if (useOnDemand && (importedPackagesOrClasses.contains(packageOrClassName) || implicitlyImported)) continue; + final Pair current = Pair.create(packageOrClassName, isStatic); + if (useOnDemand && (importedPackagesOrClasses.contains(current) || implicitlyImported)) continue; buffer.append("import "); if (isStatic) buffer.append("static "); if (useOnDemand) { - importedPackagesOrClasses.add(packageOrClassName); + importedPackagesOrClasses.add(current); buffer.append(packageOrClassName); buffer.append(".*"); } diff --git a/java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed.java b/java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed.java new file mode 100644 index 000000000000..b9f1c7700644 --- /dev/null +++ b/java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed.java @@ -0,0 +1,41 @@ +package example; + +import static java.lang.Math.cos; +import static java.lang.Math.sin; +import example.ImportedClass.I1; +import example.ImportedClass.I1A; +import static example.ImportedClass.BAZZ.E1; +import static example.ImportedClass.V; +import static example.ImportedClass.FOO; +import example.ImportedClass.BAR; + +public class MyTest { + protected MyTest() { + super(); + String az = BAR.AZ + V; + System.out.println(FOO); + } +} + +class ImportedClass { + public static String V = ""; + + public static enum I1 { + E1; + } + public static enum I1A { + E1; + } + + public static enum BAR { + E1, AZ; + } + + public static String FOO = ""; + + public static enum BAZZ { + E1; + } + + +} diff --git a/java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed_after.java b/java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed_after.java new file mode 100644 index 000000000000..418a34434f31 --- /dev/null +++ b/java/java-tests/testData/psi/optimizeImports/StaticImportsToOptimizeMixed_after.java @@ -0,0 +1,37 @@ +package example; + +import example.ImportedClass.BAR; + +import static example.ImportedClass.FOO; +import static example.ImportedClass.V; + +public class MyTest { + protected MyTest() { + super(); + String az = BAR.AZ + V; + System.out.println(FOO); + } +} + +class ImportedClass { + public static String V = ""; + + public static enum I1 { + E1; + } + public static enum I1A { + E1; + } + + public static enum BAR { + E1, AZ; + } + + public static String FOO = ""; + + public static enum BAZZ { + E1; + } + + +} diff --git a/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java b/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java index 571a88a8f84e..aa2efdb967cb 100644 --- a/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java +++ b/java/java-tests/testSrc/com/intellij/psi/OptimizeImportsTest.java @@ -34,6 +34,7 @@ public class OptimizeImportsTest extends PsiTestCase{ public void testSCR18364() throws Exception { doTest(); } public void testStaticImports1() throws Exception { doTest(); } public void testStaticImportsToOptimize() throws Exception { doTest(); } + public void testStaticImportsToOptimizeMixed() throws Exception { doTest(); } public void testStaticImportsToOptimize2() throws Exception { doTest(); } public void testEmptyImportList() throws Exception { doTest(); } public void testIDEADEV10716() throws Exception { doTest(); }