From de32aab90990e8590d4ab21e0ff67d53a32db4e7 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Fri, 31 Jan 2014 18:28:48 +0400 Subject: [PATCH] IDEA-120028 Groovy: "Optimize imports": static keyword is removed from unresolved imports --- .../groovy/editor/GroovyImportOptimizer.java | 15 +++++++++++---- .../optimizeImports/OptimizeImportsTest.groovy | 2 ++ .../optimizeImports/DontRemoveRedImports8.groovy | 4 ++++ .../DontRemoveRedImports8_after.groovy | 3 +++ .../optimizeImports/DontRemoveRedImports9.groovy | 4 ++++ .../DontRemoveRedImports9_after.groovy | 3 +++ 6 files changed, 27 insertions(+), 4 deletions(-) create mode 100644 plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8.groovy create mode 100644 plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8_after.groovy create mode 100644 plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9.groovy create mode 100644 plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9_after.groovy diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/editor/GroovyImportOptimizer.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/editor/GroovyImportOptimizer.java index 6b7a13c5bb83..a90973344e4b 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/editor/GroovyImportOptimizer.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/editor/GroovyImportOptimizer.java @@ -227,16 +227,23 @@ public class GroovyImportOptimizer implements ImportOptimizer { usedImports.add(anImport); } - final String className = getImportReferenceText(anImport); + final String symbolName = getImportReferenceText(anImport); if (anImport.isAliasedImport()) { if (aliased != null) { - aliased.put(className, importedName); + aliased.put(symbolName, importedName); } } else { - if (importedClasses != null) { - importedClasses.add(className); + if (anImport.isStatic()) { + if (staticallyImportedMembers != null) { + staticallyImportedMembers.add(symbolName); + } + } + else { + if (importedClasses != null) { + importedClasses.add(symbolName); + } } } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/optimizeImports/OptimizeImportsTest.groovy b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/optimizeImports/OptimizeImportsTest.groovy index 9baff80feaf9..223927107763 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/optimizeImports/OptimizeImportsTest.groovy +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/optimizeImports/OptimizeImportsTest.groovy @@ -150,6 +150,8 @@ public class OptimizeImportsTest extends LightGroovyTestCase { public void testDontRemoveRedImports5() { doTest(); } public void testDontRemoveRedImports6() { doTest(); } public void testDontRemoveRedImports7() { doTest(); } + public void testDontRemoveRedImports8() { doTest(); } + public void testDontRemoveRedImports9() { doTest(); } public void testRemoveSamePackaged() { myFixture.addClass("package foo.bar; public class Aaaa {}"); diff --git a/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8.groovy b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8.groovy new file mode 100644 index 000000000000..dd0b3f63e88b --- /dev/null +++ b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8.groovy @@ -0,0 +1,4 @@ +import static abc.X.foo +import static abc.X.bar + +print foo() \ No newline at end of file diff --git a/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8_after.groovy b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8_after.groovy new file mode 100644 index 000000000000..b3eafc4b7e34 --- /dev/null +++ b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports8_after.groovy @@ -0,0 +1,3 @@ +import static abc.X.foo + +print foo() \ No newline at end of file diff --git a/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9.groovy b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9.groovy new file mode 100644 index 000000000000..1fb427bc3c54 --- /dev/null +++ b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9.groovy @@ -0,0 +1,4 @@ +import static abc.X.foo as bar +import static abc.X.baz as xyz + +print bar() \ No newline at end of file diff --git a/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9_after.groovy b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9_after.groovy new file mode 100644 index 000000000000..0549ca776781 --- /dev/null +++ b/plugins/groovy/testdata/optimizeImports/DontRemoveRedImports9_after.groovy @@ -0,0 +1,3 @@ +import static abc.X.foo as bar + +print bar() \ No newline at end of file