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 package org.jetbrains.kotlin.idea.inspections
import com.intellij.codeInspection.LocalInspectionToolSession import com.intellij.codeInsight.actions.OptimizeImportsProcessor
import com.intellij.codeInspection.ProblemHighlightType import com.intellij.codeInspection.*
import com.intellij.codeInspection.ProblemsHolder import com.intellij.openapi.project.Project
import com.intellij.openapi.util.Key import com.intellij.openapi.util.Key
import com.intellij.psi.PsiElementVisitor 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.analyze
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer import org.jetbrains.kotlin.idea.imports.KotlinImportOptimizer
import org.jetbrains.kotlin.idea.imports.importableFqNameSafe import org.jetbrains.kotlin.idea.imports.importableFqNameSafe
import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.psi.JetFile import org.jetbrains.kotlin.psi.JetFile
import org.jetbrains.kotlin.psi.JetImportDirective
import org.jetbrains.kotlin.psi.JetSimpleNameExpression import org.jetbrains.kotlin.psi.JetSimpleNameExpression
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.bindingContextUtil.getReferenceTargets import org.jetbrains.kotlin.resolve.bindingContextUtil.getReferenceTargets
import java.util.HashSet import java.util.HashSet
@@ -78,8 +76,20 @@ class UnusedImportInspection : AbstractKotlinInspection() {
problemsHolder.registerProblem( problemsHolder.registerProblem(
directive, directive,
"Unused import 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") @TestMetadata("idea/testData/quickfix/override")
@TestDataPath("$PROJECT_ROOT") @TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class) @RunWith(JUnit3RunnerWithInners.class)