From 8088b770f794d503ce899b24a67292fdbf01eda9 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Sat, 17 Mar 2012 02:03:13 +0400 Subject: [PATCH] #KT-1426 Implement "Optimize Imports" in plugin - fixes for used reference search (look to calls and work with java type constructors.) --- .../editor/importOptimizer/JetImportOptimizer.java | 12 +++++++----- .../testData/editor/optimizeImports/UnusedImports.kt | 3 ++- .../editor/optimizeImports/UnusedImports_after.kt | 3 ++- .../plugin/importOptimizer/OptimizeImportsTest.java | 5 ++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java b/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java index f3d55253980..31049a9dac3 100644 --- a/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java +++ b/idea/src/org/jetbrains/jet/plugin/editor/importOptimizer/JetImportOptimizer.java @@ -129,7 +129,7 @@ public class JetImportOptimizer implements ImportOptimizer { @Override public void visitReferenceExpression(JetReferenceExpression expression) { - if (PsiTreeUtil.getParentOfType(expression, JetQualifiedExpression.class) == null) { + if (PsiTreeUtil.getParentOfType(expression, JetImportDirective.class) == null) { PsiReference reference = expression.getReference(); if (reference != null) { List references = new ArrayList(); @@ -145,7 +145,7 @@ public class JetImportOptimizer implements ImportOptimizer { } for (PsiElement psiReference : references) { - FqName fqName = getElementFQName(psiReference); + FqName fqName = getElementUsageFQName(psiReference); if (fqName != null) { usedQualifiedNames.add(fqName); } @@ -163,7 +163,7 @@ public class JetImportOptimizer implements ImportOptimizer { @Nullable - public static FqName getElementFQName(PsiElement element) { + public static FqName getElementUsageFQName(PsiElement element) { if (element instanceof JetClassOrObject) { return JetPsiUtil.getFQName((JetClassOrObject) element); } @@ -184,6 +184,10 @@ public class JetImportOptimizer implements ImportOptimizer { if (containingClass != null) { String classFQNStr = containingClass.getQualifiedName(); if (classFQNStr != null) { + if (method.isConstructor()) { + return new FqName(classFQNStr); + } + FqName classFQN = new FqName(classFQNStr); if (classFQN.shortName().equals(JvmAbi.PACKAGE_CLASS)) { return QualifiedNamesUtil.combine(classFQN.parent(), method.getName()); @@ -197,6 +201,4 @@ public class JetImportOptimizer implements ImportOptimizer { return null; } - - } diff --git a/idea/testData/editor/optimizeImports/UnusedImports.kt b/idea/testData/editor/optimizeImports/UnusedImports.kt index 1a073f5d448..9d371708340 100644 --- a/idea/testData/editor/optimizeImports/UnusedImports.kt +++ b/idea/testData/editor/optimizeImports/UnusedImports.kt @@ -4,10 +4,11 @@ import java.lang.StringBuilder import java.net.HttpRetryException import java.util.ArrayList import kotlin.util.measureTimeMillis +import java.util.HashMap class Action { fun test() { - measureTimeMillis({ println("Some")}) + measureTimeMillis({ println(HashMap().size()) }) val test : ArrayList? = null } } \ No newline at end of file diff --git a/idea/testData/editor/optimizeImports/UnusedImports_after.kt b/idea/testData/editor/optimizeImports/UnusedImports_after.kt index 0287773ec7d..8b49df7fdde 100644 --- a/idea/testData/editor/optimizeImports/UnusedImports_after.kt +++ b/idea/testData/editor/optimizeImports/UnusedImports_after.kt @@ -1,9 +1,10 @@ import java.util.ArrayList +import java.util.HashMap import kotlin.util.measureTimeMillis class Action { fun test() { - measureTimeMillis({ println("Some")}) + measureTimeMillis({ println(HashMap().size()) }) val test : ArrayList? = null } } \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java index 2e4b3298d6d..605c3441fdd 100644 --- a/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/importOptimizer/OptimizeImportsTest.java @@ -98,8 +98,7 @@ public class OptimizeImportsTest extends LightCodeInsightTestCase { private static void invokeFormatFile() { CommandProcessor.getInstance().executeCommand( - getProject(), new JetImportOptimizer().processFile(getFile()), - "Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION); + getProject(), new JetImportOptimizer().processFile(getFile()), + "Optimize Imports", null, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION); } - } \ No newline at end of file