mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Java: Quick fix that adds "requires" statement to the module info - code cleanup, improved messages (IDEA-162762)
This commit is contained in:
+4
-15
@@ -23,6 +23,7 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.Nls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -85,27 +86,15 @@ public class AddRequiredModuleFix implements IntentionAction {
|
||||
|
||||
@Nullable
|
||||
private static PsiElement findAddingPlace(@NotNull PsiJavaModule module) {
|
||||
PsiElement addingPlace = null;
|
||||
for (PsiRequiresStatement requires : module.getRequires()) {
|
||||
addingPlace = requires;
|
||||
}
|
||||
if (addingPlace != null) {
|
||||
return addingPlace;
|
||||
}
|
||||
for (PsiExportsStatement exports : module.getExports()) {
|
||||
addingPlace = exports;
|
||||
}
|
||||
if (addingPlace != null) {
|
||||
return addingPlace;
|
||||
}
|
||||
return getLBrace(module);
|
||||
PsiElement addingPlace = ContainerUtil.iterateAndGetLastItem(module.getRequires());
|
||||
return addingPlace != null ? addingPlace : getLBrace(module);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static PsiElement getLBrace(@NotNull PsiJavaModule module) {
|
||||
PsiJavaModuleReferenceElement nameElement = module.getNameElement();
|
||||
for (PsiElement element = nameElement.getNextSibling(); element != null; element = element.getNextSibling()) {
|
||||
if (element instanceof PsiJavaToken && ((PsiJavaToken)element).getTokenType() == JavaTokenType.LBRACE) {
|
||||
if (PsiUtil.isJavaToken(element, JavaTokenType.LBRACE)) {
|
||||
return element;
|
||||
}
|
||||
}
|
||||
|
||||
+5
-2
@@ -16,6 +16,7 @@
|
||||
package com.intellij.codeInsight.daemon.quickFix
|
||||
|
||||
import com.intellij.JavaTestUtil
|
||||
import com.intellij.codeInsight.daemon.QuickFixBundle
|
||||
import com.intellij.testFramework.fixtures.LightJava9ModulesCodeInsightFixtureTestCase
|
||||
import com.intellij.testFramework.fixtures.MultiModuleJava9ProjectDescriptor.ModuleDescriptor.*
|
||||
|
||||
@@ -23,6 +24,8 @@ import com.intellij.testFramework.fixtures.MultiModuleJava9ProjectDescriptor.Mod
|
||||
* @author Pavel.Dolgov
|
||||
*/
|
||||
class AddRequiredModuleTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
val messageM2 = QuickFixBundle.message("module.info.add.requires.name", "M2")!!
|
||||
|
||||
override fun setUp() {
|
||||
super.setUp()
|
||||
addFile("module-info.java", "module M2 { exports pkgA; }", M2)
|
||||
@@ -36,7 +39,7 @@ class AddRequiredModuleTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
"public class B { A a; }", MAIN)
|
||||
myFixture.configureFromExistingVirtualFile(editedFile)
|
||||
|
||||
val action = myFixture.findSingleIntention("Add 'M2' as required module")
|
||||
val action = myFixture.findSingleIntention(messageM2)
|
||||
assertNotNull(action)
|
||||
myFixture.launchAction(action)
|
||||
|
||||
@@ -51,7 +54,7 @@ class AddRequiredModuleTest : LightJava9ModulesCodeInsightFixtureTestCase() {
|
||||
"public class B { A a; }", M3)
|
||||
myFixture.configureFromExistingVirtualFile(editedFile)
|
||||
|
||||
val actions = myFixture.filterAvailableIntentions("Add 'M2' as required module")
|
||||
val actions = myFixture.filterAvailableIntentions(messageM2)
|
||||
assertEmpty(actions)
|
||||
}
|
||||
|
||||
|
||||
@@ -300,5 +300,5 @@ move.file.to.source.root.text=Move file to a source root
|
||||
|
||||
delete.element.fix.text=Delete element
|
||||
|
||||
module.info.add.requires.family.name=Add required module
|
||||
module.info.add.requires.name=Add ''{0}'' as required module
|
||||
module.info.add.requires.family.name=Add 'requires' statement to module-info.java
|
||||
module.info.add.requires.name=Add ''requires {0}'' statement
|
||||
Reference in New Issue
Block a user