mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[java] makes "module exports to itself" inspection delete degenerate statements
This commit is contained in:
+13
-3
@@ -22,8 +22,11 @@ import com.intellij.codeInspection.ProblemsHolder;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Pavel.Dolgov
|
||||
*/
|
||||
@@ -47,11 +50,18 @@ public class Java9ModuleExportsPackageToItselfInspection extends BaseJavaLocalIn
|
||||
PsiJavaModule javaModule = PsiTreeUtil.getParentOfType(statement, PsiJavaModule.class);
|
||||
if (javaModule != null) {
|
||||
String moduleName = javaModule.getName();
|
||||
for (PsiJavaModuleReferenceElement referenceElement : statement.getModuleReferences()) {
|
||||
List<PsiJavaModuleReferenceElement> references = ContainerUtil.newArrayList(statement.getModuleReferences());
|
||||
for (PsiJavaModuleReferenceElement referenceElement : references) {
|
||||
if (moduleName.equals(referenceElement.getReferenceText())) {
|
||||
String message = InspectionsBundle.message("inspection.module.exports.package.to.itself");
|
||||
String fixText = InspectionsBundle.message("exports.to.itself.delete.module.fix.name", moduleName);
|
||||
myHolder.registerProblem(referenceElement, message, QuickFixFactory.getInstance().createDeleteFix(referenceElement, fixText));
|
||||
if (references.size() == 1) {
|
||||
String fixText = InspectionsBundle.message("exports.to.itself.delete.statement.fix");
|
||||
myHolder.registerProblem(referenceElement, message, QuickFixFactory.getInstance().createDeleteFix(statement, fixText));
|
||||
}
|
||||
else {
|
||||
String fixText = InspectionsBundle.message("exports.to.itself.delete.module.ref.fix", moduleName);
|
||||
myHolder.registerProblem(referenceElement, message, QuickFixFactory.getInstance().createDeleteFix(referenceElement, fixText));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+6
-6
@@ -25,7 +25,8 @@ import org.intellij.lang.annotations.Language
|
||||
*/
|
||||
class Java9ModuleExportsPackageToItselfTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
private val message = InspectionsBundle.message("inspection.module.exports.package.to.itself")!!
|
||||
private val fix = InspectionsBundle.message("exports.to.itself.delete.module.fix.name", "M")!!
|
||||
private val fix1 = InspectionsBundle.message("exports.to.itself.delete.statement.fix")!!
|
||||
private val fix2 = InspectionsBundle.message("exports.to.itself.delete.module.ref.fix", "M")!!
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
@@ -43,18 +44,18 @@ class Java9ModuleExportsPackageToItselfTest : LightJava9ModulesCodeInsightFixtur
|
||||
fun testOnlySelfExport() {
|
||||
highlight("module M { exports pkg.main to <warning descr=\"$message\">M</warning>; }")
|
||||
fix("module M { exports pkg.main to <caret>M; }",
|
||||
"module M { exports pkg.main; }")
|
||||
"module M {\n}")
|
||||
}
|
||||
|
||||
fun testOnlySelfOpen() {
|
||||
highlight("module M { opens pkg.main to <warning descr=\"$message\">M</warning>; }")
|
||||
fix("module M { opens pkg.main to <caret>M; }",
|
||||
"module M { opens pkg.main; }")
|
||||
"module M {\n}")
|
||||
}
|
||||
|
||||
fun testOnlySelfModuleWithComments() {
|
||||
fix("module M { exports pkg.main to /*a*/ <caret>M /*b*/; }",
|
||||
"module M { exports pkg.main /*a*/ /*b*/; }")
|
||||
"module M { /*a*/ /*b*/\n}")
|
||||
}
|
||||
|
||||
fun testSelfModuleInList() {
|
||||
@@ -76,8 +77,7 @@ class Java9ModuleExportsPackageToItselfTest : LightJava9ModulesCodeInsightFixtur
|
||||
private fun fix(textBefore: String, @Language("JAVA") textAfter: String) {
|
||||
myFixture.configureByText("module-info.java", textBefore)
|
||||
|
||||
val action = myFixture.findSingleIntention(fix)
|
||||
assertNotNull(action)
|
||||
val action = myFixture.filterAvailableIntentions(fix1).firstOrNull() ?: myFixture.filterAvailableIntentions(fix2).first()
|
||||
myFixture.launchAction(action)
|
||||
|
||||
myFixture.checkHighlighting() // no warning
|
||||
|
||||
@@ -752,7 +752,8 @@ inspection.lambda.to.method.call.fix.family.name=Replace lambda expression with
|
||||
inspection.lambda.to.method.call.fix.name=Replace lambda expression with ''{0}''
|
||||
|
||||
inspection.module.exports.package.to.itself=Module exports/opens package to itself
|
||||
exports.to.itself.delete.module.fix.name=Delete reference to module ''{0}''
|
||||
exports.to.itself.delete.statement.fix=Delete statement
|
||||
exports.to.itself.delete.module.ref.fix=Delete reference to module ''{0}''
|
||||
|
||||
inspection.replace.with.bulk.message=Iteration can be replaced with bulk ''{0}'' call
|
||||
inspection.replace.with.bulk.fix.name=Replace iteration with bulk ''{0}'' call
|
||||
|
||||
Reference in New Issue
Block a user