process extensions from xincluded plugin xmls with modules but no id

GitOrigin-RevId: 16d4fad929dbe8a063abf0fdf4fb4fcb1ade3de7
This commit is contained in:
peter
2019-08-16 14:21:53 +03:00
committed by intellij-monorepo-bot
parent 0ceb1a7af2
commit 8fef03d491
6 changed files with 19 additions and 9 deletions

View File

@@ -5,6 +5,7 @@ import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.impl.LibraryScopeCache;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiManager;
import com.intellij.psi.search.GlobalSearchScope;
@@ -43,13 +44,10 @@ public class PluginIdModuleIndex extends ScalarIndexExtension<String> {
if (plugin == null) return Collections.emptyMap();
List<String> ids = new ArrayList<>();
ContainerUtil.addIfNotNull(ids, plugin.getPluginId());
ids.add(StringUtil.notNullize(plugin.getPluginId()));
for (PluginModule module : plugin.getModules()) {
ContainerUtil.addIfNotNull(ids, module.getValue().getStringValue());
}
if (ids.isEmpty()) {
ids.add("");
}
return ContainerUtil.newHashMap(ids, Collections.nCopies(ids.size(), null));
};
}
@@ -62,7 +60,7 @@ public class PluginIdModuleIndex extends ScalarIndexExtension<String> {
@Override
public int getVersion() {
return 0;
return 1;
}
@NotNull

View File

@@ -11,5 +11,6 @@
<orderEntry type="module" module-name="intellij.devkit.tests" />
<orderEntry type="module" module-name="intellij.xml.psi.impl" scope="TEST" />
<orderEntry type="module" module-name="intellij.spellchecker" scope="TEST" />
<orderEntry type="module" module-name="intellij.xml.analysis.impl" scope="TEST" />
</component>
</module>

View File

@@ -1,3 +1,3 @@
<extensionPoints>
<extensionPoint name="extension" beanClass="foo.Bar"/>
<extensionPoint name="extensionX" beanClass="foo.Bar"/>
</extensionPoints>

View File

@@ -0,0 +1,6 @@
<idea-plugin>
<module value="someModule"/>
<extensionPoints>
<extensionPoint qualifiedName="foo.extension2" beanClass="foo.Bar"/>
</extensionPoints>
</idea-plugin>

View File

@@ -4,15 +4,18 @@
<vendor>JetBrains</vendor>
<version>1.0</version>
<xi:include href="/pluginWithXInclude-extensionPointsWithModule.xml" xpointer="xpointer(/idea-plugin/*)"/>
<extensionPoints>
<extensionPoint name="bar" interface="java.util.List"/>
<xi:include href="/extensionPoints.xml" xpointer="xpointer(/extensionPoints/*)"/>
<xi:include href="/pluginWithXInclude-extensionPoints.xml" xpointer="xpointer(/extensionPoints/*)"/>
</extensionPoints>
<extensions defaultExtensionNs="foo">
<bar implementation="java.util.ArrayList"/>
<extension/>
<extensionX/>
<extension2/>
<<error descr="Element extensionUnknown is not allowed here">extensionUnknown</error>/>
</extensions>
</idea-plugin>

View File

@@ -6,6 +6,7 @@ package org.jetbrains.idea.devkit.codeInsight
import com.intellij.codeInsight.TargetElementUtil
import com.intellij.codeInsight.completion.CompletionContributorEP
import com.intellij.codeInsight.completion.CompletionType
import com.intellij.codeInsight.daemon.impl.analysis.XmlPathReferenceInspection
import com.intellij.codeInsight.lookup.LookupElement
import com.intellij.codeInsight.lookup.LookupElementPresentation
import com.intellij.codeInspection.LocalInspectionEP
@@ -426,7 +427,8 @@ class PluginXmlFunctionalTest extends JavaCodeInsightFixtureTestCase {
}
void testPluginWithXInclude() {
doHighlightingTest("pluginWithXInclude.xml", "pluginWithXInclude-extensionPoints.xml")
myFixture.enableInspections(new XmlPathReferenceInspection())
doHighlightingTest("pluginWithXInclude.xml", "pluginWithXInclude-extensionPoints.xml", "pluginWithXInclude-extensionPointsWithModule.xml")
}
void testPluginXmlInIdeaProjectWithoutVendor() {