[devkit] No need for "manual" skipping xi:include elements during plugin descriptor indexing

com.intellij.xml.util.InclusionProvider.shouldProcessIncludesNow is responsible for that

GitOrigin-RevId: eb6023983d0a01b90d1babdf148bb9b3823f44f3
This commit is contained in:
Karol Lewandowski
2025-08-22 15:46:54 +00:00
committed by intellij-monorepo-bot
parent 7c6d9ab4cf
commit b5fd0cccff
4 changed files with 9 additions and 26 deletions
@@ -27,6 +27,7 @@ import com.intellij.util.xml.DomManager;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.devkit.dom.ExtensionPoint;
import org.jetbrains.idea.devkit.dom.ExtensionPoints;
import org.jetbrains.idea.devkit.dom.IdeaPlugin;
import java.util.*;
@@ -135,9 +136,8 @@ public final class ExtensionPointIndex extends PluginXmlIndexBase<String, Intege
}
static void indexExtensionPoints(IdeaPlugin plugin, Consumer<? super ExtensionPoint> consumer) {
for (DomElement points : getChildrenWithoutIncludes(plugin, "extensionPoints")) {
for (DomElement point : getChildrenWithoutIncludes(points, "extensionPoint")) {
ExtensionPoint extensionPoint = (ExtensionPoint)point;
for (ExtensionPoints extensionPoints : plugin.getExtensionPoints()) {
for (ExtensionPoint extensionPoint : extensionPoints.getExtensionPoints()) {
consumer.accept(extensionPoint);
}
}
@@ -60,9 +60,7 @@ public final class PluginIdDependenciesIndex extends PluginXmlIndexBase<String,
ids.add(PLUGIN_ID_KEY_PREFIX + pluginId);
}
//noinspection unchecked
final List<Dependency> dependencies = (List<Dependency>)getChildrenWithoutIncludes(plugin, "depends");
for (Dependency dependency : dependencies) {
for (Dependency dependency : plugin.getDepends()) {
ContainerUtil.addIfNotNull(ids, dependency.getStringValue());
final String configFile = dependency.getConfigFile().getStringValue();
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.idea.devkit.dom.index;
import com.intellij.openapi.project.Project;
@@ -46,8 +46,8 @@ public final class PluginIdModuleIndex extends PluginXmlIndexBase<String, Void>
protected Map<String, Void> performIndexing(IdeaPlugin plugin) {
List<String> ids = new ArrayList<>();
ids.add(StringUtil.notNullize(plugin.getPluginId()));
for (DomElement module : getChildrenWithoutIncludes(plugin, "module")) {
ContainerUtil.addIfNotNull(ids, ((PluginModule)module).getValue().getStringValue());
for (PluginModule module : plugin.getModules()) {
ContainerUtil.addIfNotNull(ids, module.getValue().getStringValue());
}
return ContainerUtil.newHashMap(ids, Collections.nCopies(ids.size(), null));
}
@@ -1,4 +1,4 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package org.jetbrains.idea.devkit.dom.index;
import com.intellij.ide.highlighter.XmlFileType;
@@ -6,25 +6,19 @@ import com.intellij.psi.PsiFile;
import com.intellij.psi.xml.XmlFile;
import com.intellij.util.indexing.*;
import com.intellij.util.text.CharArrayUtil;
import com.intellij.util.xml.DomElement;
import com.intellij.util.xml.impl.AbstractCollectionChildDescription;
import com.intellij.util.xml.impl.DomInvocationHandler;
import com.intellij.util.xml.impl.DomManagerImpl;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.devkit.dom.IdeaPlugin;
import org.jetbrains.idea.devkit.util.DescriptorUtil;
import java.util.Collections;
import java.util.List;
import java.util.Map;
@ApiStatus.Internal
public abstract class PluginXmlIndexBase<K, V> extends FileBasedIndexExtension<K, V> {
protected static final int BASE_INDEX_VERSION = 10;
protected static final int BASE_INDEX_VERSION = 11;
protected abstract Map<K, V> performIndexing(IdeaPlugin plugin);
@@ -51,15 +45,6 @@ public abstract class PluginXmlIndexBase<K, V> extends FileBasedIndexExtension<K
};
}
// skip any xi:include
protected static List<? extends DomElement> getChildrenWithoutIncludes(DomElement parent, @NonNls String tagName) {
AbstractCollectionChildDescription collectionChildDescription =
(AbstractCollectionChildDescription)parent.getGenericInfo().getCollectionChildDescription(tagName);
DomInvocationHandler handler = DomManagerImpl.getDomInvocationHandler(parent);
assert handler != null : parent;
return handler.getCollectionChildren(collectionChildDescription, false);
}
private static @Nullable IdeaPlugin obtainIdeaPlugin(@NotNull FileContent content) {
if (!looksLikeIdeaPluginXml(content)) return null;