Added quickfix on unused import

This commit is contained in:
Valentin Kipyatkov
2015-07-16 18:59:12 +03:00
parent af192698ed
commit 1324ce5928
5 changed files with 48 additions and 7 deletions
@@ -16,21 +16,19 @@
package org.jetbrains.kotlin.idea.inspections
import com.intellij.codeInspection.LocalInspectionToolSession
import com.intellij.codeInspection.ProblemHighlightType
import com.intellij.codeInspection.ProblemsHolder
import com.intellij.codeInsight.actions.OptimizeImportsProcessor
import com.intellij.codeInspection.*
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Key
import com.intellij.psi.PsiElementVisitor
import org.jetbrains.kotlin.idea.JetBundle
import org.jetbrains.kotlin.idea.caches.resolve.analyze
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
import org.jetbrains.kotlin.idea.imports.importableFqNameSafe
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.psi.JetImportDirective
import org.jetbrains.kotlin.psi.JetSimpleNameExpression
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.bindingContextUtil.getReferenceTargets
import java.util.HashSet
@@ -78,8 +76,20 @@ class UnusedImportInspection : AbstractKotlinInspection() {
problemsHolder.registerProblem(
directive,
"Unused import directive",
ProblemHighlightType.LIKE_UNUSED_SYMBOL)
ProblemHighlightType.LIKE_UNUSED_SYMBOL,
OptimizeImportsQuickFix(file))
}
}
}
private class OptimizeImportsQuickFix(private val file: JetFile): LocalQuickFix {
override fun getName() = "Optimize imports"
override fun getFamilyName() = getName()
override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
OptimizeImportsProcessor(project, file).run()
}
}
}
+1
View File
@@ -0,0 +1 @@
org.jetbrains.kotlin.idea.inspections.UnusedImportInspection
+8
View File
@@ -0,0 +1,8 @@
// "Optimize imports" "true"
<caret>import java.io.*
import java.util.*
fun foo(list: ArrayList<String>) {
list.add("")
}
@@ -0,0 +1,7 @@
// "Optimize imports" "true"
import java.util.ArrayList
fun foo(list: ArrayList<String>) {
list.add("")
}
@@ -4471,6 +4471,21 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest {
}
}
@TestMetadata("idea/testData/quickfix/optimizeImports")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public static class OptimizeImports extends AbstractQuickFixTest {
public void testAllFilesPresentInOptimizeImports() throws Exception {
JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/optimizeImports"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true);
}
@TestMetadata("fileRuntime.kt")
public void testFileRuntime() throws Exception {
String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/optimizeImports/fileRuntime.kt");
doTest(fileName);
}
}
@TestMetadata("idea/testData/quickfix/override")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)