diff --git a/plugins/devkit/devkit-java-tests/intellij.devkit.java.tests.iml b/plugins/devkit/devkit-java-tests/intellij.devkit.java.tests.iml
index 1cbf9e81081a..1af23a84908c 100644
--- a/plugins/devkit/devkit-java-tests/intellij.devkit.java.tests.iml
+++ b/plugins/devkit/devkit-java-tests/intellij.devkit.java.tests.iml
@@ -8,5 +8,6 @@
+
\ No newline at end of file
diff --git a/plugins/devkit/devkit-java-tests/testData/pluginXmlDomStubs/XIncludeWithActions-main.xml b/plugins/devkit/devkit-java-tests/testData/pluginXmlDomStubs/XIncludeWithActions-main.xml
new file mode 100644
index 000000000000..c68191e03834
--- /dev/null
+++ b/plugins/devkit/devkit-java-tests/testData/pluginXmlDomStubs/XIncludeWithActions-main.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/devkit/devkit-java-tests/testData/pluginXmlDomStubs/XIncludeWithActions.xml b/plugins/devkit/devkit-java-tests/testData/pluginXmlDomStubs/XIncludeWithActions.xml
new file mode 100644
index 000000000000..2b8c33da1d0d
--- /dev/null
+++ b/plugins/devkit/devkit-java-tests/testData/pluginXmlDomStubs/XIncludeWithActions.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlDomStubsTest.java b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlDomStubsTest.java
index a6f109e3df78..5f1db3e86693 100644
--- a/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlDomStubsTest.java
+++ b/plugins/devkit/devkit-java-tests/testSrc/org/jetbrains/idea/devkit/codeInsight/PluginXmlDomStubsTest.java
@@ -15,9 +15,20 @@
*/
package org.jetbrains.idea.devkit.codeInsight;
+import com.intellij.psi.xml.XmlTag;
import com.intellij.testFramework.TestDataPath;
+import com.intellij.util.xml.DomFileElement;
+import com.intellij.util.xml.DomTarget;
+import com.intellij.util.xml.impl.DomInvocationHandler;
+import com.intellij.util.xml.impl.DomManagerImpl;
import com.intellij.util.xml.stubs.DomStubTest;
+import com.intellij.xml.util.IncludedXmlTag;
import org.jetbrains.idea.devkit.DevkitJavaTestsUtil;
+import org.jetbrains.idea.devkit.dom.Action;
+import org.jetbrains.idea.devkit.dom.Actions;
+import org.jetbrains.idea.devkit.dom.IdeaPlugin;
+
+import java.util.List;
@TestDataPath("$CONTENT_ROOT/testData/pluginXmlDomStubs")
public class PluginXmlDomStubsTest extends DomStubTest {
@@ -74,6 +85,27 @@ public class PluginXmlDomStubsTest extends DomStubTest {
myFixture.testHighlighting("pluginWithXInclude.xml");
}
+ public void testIncludedActions() {
+ prepareFile("XIncludeWithActions.xml");
+ DomFileElement element = prepare("XIncludeWithActions-main.xml", IdeaPlugin.class);
+
+ XmlTag[] tags = element.getRootTag().getSubTags();
+ assertEquals(2, tags.length);
+ XmlTag included = tags[0];
+ assertTrue(included instanceof IncludedXmlTag);
+ assertEquals("actions", included.getName());
+
+ List actions = element.getRootElement().getActions();
+ assertEquals(1, actions.size());
+ assertNotNull(actions.get(0).getXmlTag());
+
+ Action action = actions.get(0).getGroups().get(0).getActions().get(0);
+ DomInvocationHandler handler = DomManagerImpl.getDomInvocationHandler(action.getId());
+ assertNotNull(handler.getStub());
+
+ assertNotNull(DomTarget.getTarget(action));
+ }
+
@Override
protected String getBasePath() {
return DevkitJavaTestsUtil.TESTDATA_PATH + "pluginXmlDomStubs";
diff --git a/xml/dom-impl/src/com/intellij/util/xml/stubs/StubParentStrategy.java b/xml/dom-impl/src/com/intellij/util/xml/stubs/StubParentStrategy.java
index 0bdc3e0a414a..65af3dbcbf8a 100644
--- a/xml/dom-impl/src/com/intellij/util/xml/stubs/StubParentStrategy.java
+++ b/xml/dom-impl/src/com/intellij/util/xml/stubs/StubParentStrategy.java
@@ -21,6 +21,7 @@ import com.intellij.psi.xml.XmlElement;
import com.intellij.psi.xml.XmlFile;
import com.intellij.psi.xml.XmlTag;
import com.intellij.util.xml.impl.*;
+import com.intellij.xml.util.IncludedXmlTag;
import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -94,7 +95,7 @@ public class StubParentStrategy implements DomParentStrategy {
int i = 0;
String nameToFind = myStub.getName();
for (XmlTag xmlTag : tags) {
- if (nameToFind.equals(xmlTag.getName()) && myStub.getIndex() == i++) {
+ if (nameToFind.equals(xmlTag.getName()) && !(xmlTag instanceof IncludedXmlTag) && myStub.getIndex() == i++) {
return xmlTag;
}
}