diff --git a/plugins/devkit/devkit-java-tests/testData/codeInsight/ActionHighlighting.xml b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml
similarity index 100%
rename from plugins/devkit/devkit-java-tests/testData/codeInsight/ActionHighlighting.xml
rename to plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml
diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties
new file mode 100644
index 000000000000..fdc9fcf3b6ff
--- /dev/null
+++ b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties
@@ -0,0 +1 @@
+another.key=My Text
\ No newline at end of file
diff --git a/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties
new file mode 100644
index 000000000000..0721566edff3
--- /dev/null
+++ b/plugins/devkit/devkit-java-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties
@@ -0,0 +1,2 @@
+my.key=My Text
+advanced.setting.mySettingKey=Advanced Setting Key
\ No newline at end of file
diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy
index afb08f585f4a..5f4a7521e9cd 100644
--- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy
+++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlFunctionalTest.groovy
@@ -110,9 +110,9 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase {
String ideCore = PathUtil.getJarPathForClass(Configurable.class)
moduleBuilder.addLibrary("ide-core", ideCore)
String ideCoreImpl = PathUtil.getJarPathForClass(NotificationGroupEP.class)
- moduleBuilder.addLibrary("ide-core-impl", ideCoreImpl);
+ moduleBuilder.addLibrary("ide-core-impl", ideCoreImpl)
- moduleBuilder.addLibrary("util-ui", PathUtil.getJarPathForClass(AllIcons.class));
+ moduleBuilder.addLibrary("util-ui", PathUtil.getJarPathForClass(AllIcons.class))
}
// Gradle-like setup, but JBList not in Library
@@ -232,9 +232,9 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase {
String moduleDescriptorFilename = name+ ".xml"
VirtualFile moduleRoot = myFixture.tempDirFixture.findOrCreateDir(name)
VirtualFile file = myFixture.copyFileToProject(moduleDescriptorFilename, "/" + name + "/" + moduleDescriptorFilename)
- Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, name, moduleRoot);
- ModuleRootModificationUtil.setModuleSdk(dependencyModule, IdeaTestUtil.getMockJdk17());
- ModuleRootModificationUtil.addDependency(getModule(), dependencyModule);
+ Module dependencyModule = PsiTestUtil.addModule(getProject(), StdModuleTypes.JAVA, name, moduleRoot)
+ ModuleRootModificationUtil.setModuleSdk(dependencyModule, IdeaTestUtil.getMockJdk17())
+ ModuleRootModificationUtil.addDependency(getModule(), dependencyModule)
return file
}
@@ -690,28 +690,6 @@ public class MyErrorHandler extends ErrorReportSubmitter {}
myFixture.checkResultByFile(getTestName(true) + "_after.xml")
}
- @SuppressWarnings("ComponentNotRegistered")
- void testActionHighlighting() {
- configureByFile()
- myFixture.copyFileToProject("MyBundle.properties")
- myFixture.copyFileToProject("AnotherBundle.properties")
- myFixture.addClass("package foo.bar; public class BarAction extends com.intellij.openapi.actionSystem.AnAction { }")
- myFixture.addClass("""package foo; class PackagePrivateActionBase extends com.intellij.openapi.actionSystem.AnAction {
- PackagePrivateActionBase() {}
- } """)
- myFixture.addClass("package foo; public class ActionWithDefaultConstructor extends PackagePrivateActionBase { }")
- myFixture.addClass("package foo.bar; public class BarGroup extends com.intellij.openapi.actionSystem.ActionGroup { }")
- myFixture.addClass("package foo.bar; import org.jetbrains.annotations.NotNull;" +
- "public class GroupWithCanBePerformed extends com.intellij.openapi.actionSystem.ActionGroup { " +
- " @Override " +
- " public boolean canBePerformed(@NotNull com.intellij.openapi.actionSystem.DataContext context) {" +
- " return true;" +
- " }" +
- "}")
- myFixture.addFileToProject("keymaps/MyKeymap.xml", "")
- myFixture.testHighlighting()
- }
-
@SuppressWarnings("ComponentNotRegistered")
void testActionCompletion() {
configureByFile()
@@ -827,12 +805,12 @@ public class MyErrorHandler extends ErrorReportSubmitter {}
true)
}
static List actions(HighlightInfo info) {
- List result = new ArrayList();
+ List result = new ArrayList()
info.findRegisteredQuickFix((descriptor,range) -> {
result.add(descriptor.getAction())
- return null;
- });
- return result;
+ return null
+ })
+ return result
}
diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java
index 1abd1a48d6fd..7d1f78c6f8f8 100644
--- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java
+++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionActionHighlightingTest.java
@@ -28,4 +28,28 @@ public class PluginXmlDomInspectionActionHighlightingTest extends PluginXmlDomIn
public void testActionWrongClass() {
myFixture.testHighlighting("ActionWrongClass.xml");
}
+
+ @SuppressWarnings({"ComponentNotRegistered", "removal"})
+ public void testActionComplexHighlighting() {
+ myFixture.copyFileToProject("MyBundle.properties");
+ myFixture.copyFileToProject("AnotherBundle.properties");
+ myFixture.addClass("package foo.bar; public class BarAction extends com.intellij.openapi.actionSystem.AnAction {}");
+ myFixture.addClass("""
+ package foo;
+ class PackagePrivateActionBase extends com.intellij.openapi.actionSystem.AnAction {
+ PackagePrivateActionBase() {}
+ }""");
+ myFixture.addClass("package foo; public class ActionWithDefaultConstructor extends PackagePrivateActionBase {}");
+ myFixture.addClass("package foo.bar; public class BarGroup extends com.intellij.openapi.actionSystem.ActionGroup {}");
+ myFixture.addClass("""
+ package foo.bar;
+ import org.jetbrains.annotations.NotNull;
+ public class GroupWithCanBePerformed extends com.intellij.openapi.actionSystem.ActionGroup {
+ @Override
+ public boolean canBePerformed(@NotNull com.intellij.openapi.actionSystem.DataContext context) { return true; }
+ }""");
+
+ myFixture.addFileToProject("keymaps/MyKeymap.xml", "");
+ myFixture.testHighlighting("ActionComplexHighlighting.xml");
+ }
}
diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml
new file mode 100644
index 000000000000..3d108fa24096
--- /dev/null
+++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/ActionComplexHighlighting.xml
@@ -0,0 +1,107 @@
+
+ MyBundle
+
+
+
+
+
+
+
+
+
+
+
+ ""/>
+
+ java.lang.String"/>
+
+ <group class="foo.bar.BarGroup"/>
+
+
+ INVALID_VALUE"/>
+ <group id="groupWithUseShortcutOfWithoutClassAttribute" use-shortcut-of="myAction"/>
+ foo.bar.BarGroup" use-shortcut-of="myAction"/>
+
+
+
+ "" class="foo.bar.BarAction"/>
+ java.lang.String" />
+
+
+ myGroup"/>
+ INVALID_VALUE"/>
+ INVALID_VALUE">
+ INVALID_VALUE"/>
+ INVALID_VALUE"/>
+
+
+
+
+ myAction"/>
+ INVALID_VALUE"/>
+
+
+ INVALID_VALUE" anchor="after"/>
+
+ <add-to-group group-id="myGroup" relative-to-action="myAction"/>
+ first"/>
+
+
+
+
+ INVALID_KEY"/>
+
+ <synonym/>
+ <synonym text="Syn Text" key="INVALID_KEY"/>
+
+
+
+
+
+
+ INVALID_VALUE"/>
+
+
+
+
+
+ INVALID_VALUE"/>
+
+
+
+
+
+
+
+
+
+ INVALID_KEY"/>
+
+
+
+
+ INVALID_KEY"/>
+
+
+
+ INVALID_KEY"/>
+
+
+
+
+
+
+ my.key"/>
+
+
+
+
+
+ my.key"/>
+
+
+
+
+ INVALID_BUNDLE"/>
+
+
\ No newline at end of file
diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties
new file mode 100644
index 000000000000..fdc9fcf3b6ff
--- /dev/null
+++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/AnotherBundle.properties
@@ -0,0 +1 @@
+another.key=My Text
\ No newline at end of file
diff --git a/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties
new file mode 100644
index 000000000000..0721566edff3
--- /dev/null
+++ b/plugins/devkit/devkit-kotlin-tests/testData/inspections/registrationProblems/xml/actions/MyBundle.properties
@@ -0,0 +1,2 @@
+my.key=My Text
+advanced.setting.mySettingKey=Advanced Setting Key
\ No newline at end of file
diff --git a/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java b/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java
index 6c79331e1014..9307e168278f 100644
--- a/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java
+++ b/plugins/devkit/devkit-kotlin-tests/testSrc/org/jetbrains/idea/devkit/kotlin/inspections/KtPluginXmlDomInspectionActionHighlightingTest.java
@@ -2,6 +2,7 @@
package org.jetbrains.idea.devkit.kotlin.inspections;
import com.intellij.testFramework.TestDataPath;
+import org.intellij.lang.annotations.Language;
import org.jetbrains.idea.devkit.inspections.PluginXmlDomInspectionTestBase;
import org.jetbrains.idea.devkit.kotlin.DevkitKtTestsUtil;
@@ -29,4 +30,37 @@ public class KtPluginXmlDomInspectionActionHighlightingTest extends PluginXmlDom
public void testActionWrongClass() {
myFixture.testHighlighting("ActionWrongClass.xml");
}
+
+ public void testActionComplexHighlighting() {
+ myFixture.copyFileToProject("MyBundle.properties");
+ myFixture.copyFileToProject("AnotherBundle.properties");
+ addKotlinClass("foo/bar/BarAction.kt",
+ """
+ package foo.bar
+ class BarAction : com.intellij.openapi.actionSystem.AnAction() {}""");
+ addKotlinClass("foo/InternalActionBase.kt", """
+ package foo
+ internal class InternalActionBase : com.intellij.openapi.actionSystem.AnAction() {
+ constructor() {}
+ }""");
+ addKotlinClass("foo/ActionWithDefaultConstructor.kt", """
+ package foo
+ class ActionWithDefaultConstructor : InternalActionBase() {}""");
+ addKotlinClass("foo/bar/BarGroup.kt", """
+ package foo.bar
+ public class BarGroup : com.intellij.openapi.actionSystem.ActionGroup() {}""");
+ addKotlinClass("foo/bar/GroupWithCanBePerformed.kt", """
+ package foo.bar
+ public class GroupWithCanBePerformed : com.intellij.openapi.actionSystem.ActionGroup() {
+ override fun canBePerformed(context: com.intellij.openapi.actionSystem.DataContext): Boolean {
+ return true
+ }
+ }""");
+ myFixture.addFileToProject("keymaps/MyKeymap.xml", "");
+ myFixture.testHighlighting("ActionComplexHighlighting.xml");
+ }
+
+ private void addKotlinClass(String fileName, @Language("kotlin") String code) {
+ myFixture.addFileToProject(fileName, code);
+ }
}
diff --git a/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java b/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java
index a6073f4107f2..27dc0ea64d0d 100644
--- a/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java
+++ b/plugins/devkit/devkit-tests/src/org/jetbrains/idea/devkit/inspections/PluginXmlDomInspectionTestBase.java
@@ -8,7 +8,9 @@ public abstract class PluginXmlDomInspectionTestBase extends LightJavaCodeInsigh
@Override
protected void setUp() throws Exception {
super.setUp();
+ myFixture.addClass("package com.intellij.openapi.actionSystem; public interface DataContext {}");
myFixture.addClass("package com.intellij.openapi.actionSystem; public class AnAction {}");
+ myFixture.addClass("package com.intellij.openapi.actionSystem; public abstract class ActionGroup extends AnAction {}");
myFixture.addClass("package com.intellij.openapi.components; public interface ApplicationComponent {}");
myFixture.enableInspections(new PluginXmlDomInspection());
}