diff --git a/platform/core-api/api-dump-experimental.txt b/platform/core-api/api-dump-experimental.txt index 0d011eb825ae..c702fd5d4075 100644 --- a/platform/core-api/api-dump-experimental.txt +++ b/platform/core-api/api-dump-experimental.txt @@ -430,6 +430,12 @@ com.intellij.psi.stubs.StubElement - a:getStubSerializer(com.intellij.psi.tree.IElementType):com.intellij.psi.stubs.ObjectStubSerializer *f:com.intellij.psi.stubs.StubElementRegistryService$Companion - f:getInstance():com.intellij.psi.stubs.StubElementRegistryService +*:com.intellij.psi.stubs.StubRegistry +- a:registerLightStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.LightStubElementFactory):V +- a:registerStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.StubElementFactory):V +- a:registerStubSerializer(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.ObjectStubSerializer):V +*:com.intellij.psi.stubs.StubRegistryExtension +- a:register(com.intellij.psi.stubs.StubRegistry):V com.intellij.psi.templateLanguages.TemplateLanguageFileViewProvider - com.intellij.psi.FileViewProvider - *:getContentElementType(com.intellij.lang.Language):com.intellij.psi.tree.IElementType diff --git a/platform/indexing-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt b/platform/core-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt similarity index 94% rename from platform/indexing-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt rename to platform/core-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt index 822147ec5204..3bd7fe7002be 100644 --- a/platform/indexing-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt +++ b/platform/core-api/src/com/intellij/psi/stubs/StubRegistryExtension.kt @@ -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 com.intellij.psi.stubs import com.intellij.psi.tree.IElementType diff --git a/platform/core-impl/api-dump-unreviewed.txt b/platform/core-impl/api-dump-unreviewed.txt index 3752fb6088d2..c9875244098c 100644 --- a/platform/core-impl/api-dump-unreviewed.txt +++ b/platform/core-impl/api-dump-unreviewed.txt @@ -285,6 +285,7 @@ c:com.intellij.extapi.psi.StubBasedPsiElementBase - getStubOrPsiChild(com.intellij.psi.stubs.IStubElementType):com.intellij.psi.PsiElement - getStubOrPsiChildren(com.intellij.psi.stubs.IStubElementType,com.intellij.util.ArrayFactory):com.intellij.psi.PsiElement[] - getStubOrPsiChildren(com.intellij.psi.stubs.IStubElementType,com.intellij.psi.PsiElement[]):com.intellij.psi.PsiElement[] +- getStubOrPsiChildren(com.intellij.psi.tree.IElementType,com.intellij.util.ArrayFactory):com.intellij.psi.PsiElement[] - getStubOrPsiChildren(com.intellij.psi.tree.TokenSet,com.intellij.util.ArrayFactory):com.intellij.psi.PsiElement[] - getStubOrPsiChildren(com.intellij.psi.tree.TokenSet,com.intellij.psi.PsiElement[]):com.intellij.psi.PsiElement[] - p:getStubOrPsiParentOfType(java.lang.Class):com.intellij.psi.PsiElement diff --git a/platform/core-impl/resources/META-INF/CoreImpl.xml b/platform/core-impl/resources/META-INF/CoreImpl.xml index fa146132da5f..2315480a4b25 100644 --- a/platform/core-impl/resources/META-INF/CoreImpl.xml +++ b/platform/core-impl/resources/META-INF/CoreImpl.xml @@ -89,7 +89,7 @@ + serviceImplementation="com.intellij.psi.stubs.StubElementRegistryServiceImpl"/> diff --git a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java index 403ea1e654eb..35dc7776399a 100644 --- a/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java +++ b/platform/core-impl/src/com/intellij/core/CoreApplicationEnvironment.java @@ -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 com.intellij.core; import com.intellij.DynamicBundle; @@ -47,10 +47,7 @@ import com.intellij.psi.PsiReferenceService; import com.intellij.psi.PsiReferenceServiceImpl; import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry; import com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl; -import com.intellij.psi.stubs.CoreStubElementRegistryServiceImpl; -import com.intellij.psi.stubs.CoreStubTreeLoader; -import com.intellij.psi.stubs.StubElementRegistryService; -import com.intellij.psi.stubs.StubTreeLoader; +import com.intellij.psi.stubs.*; import com.intellij.util.KeyedLazyInstanceEP; import com.intellij.util.graph.GraphAlgorithms; import com.intellij.util.graph.impl.GraphAlgorithmsImpl; @@ -117,7 +114,9 @@ public class CoreApplicationEnvironment { registerApplicationService(CodeFoldingSettings.class, new CodeFoldingSettings()); registerApplicationService(CommandProcessor.class, new CoreCommandProcessor()); registerApplicationService(GraphAlgorithms.class, new GraphAlgorithmsImpl()); - registerApplicationService(StubElementRegistryService.class, new CoreStubElementRegistryServiceImpl()); + + registerApplicationExtensionPoint(StubElementRegistryServiceImplKt.STUB_REGISTRY_EP, StubRegistryExtension.class); + registerApplicationService(StubElementRegistryService.class, new StubElementRegistryServiceImpl()); application.registerService(ApplicationInfo.class, ApplicationInfoImpl.class); diff --git a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java index 5c486e18e866..f9ff9b405378 100644 --- a/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java +++ b/platform/core-impl/src/com/intellij/extapi/psi/StubBasedPsiElementBase.java @@ -436,9 +436,19 @@ public class StubBasedPsiElementBase extends ASTDelegateP } /** + * @deprecated use {@link #getStubOrPsiChildren(IElementType, ArrayFactory)} instead + * * @return children of specified type, taken from stubs (if this element is currently stub-based) or AST (otherwise). */ + @Deprecated public , Psi extends PsiElement> Psi @NotNull [] getStubOrPsiChildren(@NotNull IStubElementType elementType, @NotNull ArrayFactory f) { + return getStubOrPsiChildren((IElementType)elementType, f); + } + + /** + * @return children of specified type, taken from stubs (if this element is currently stub-based) or AST (otherwise). + */ + public , Psi extends PsiElement> Psi @NotNull [] getStubOrPsiChildren(@NotNull IElementType elementType, @NotNull ArrayFactory f) { T stub = getGreenStub(); if (stub != null) { //noinspection unchecked diff --git a/platform/indexing-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt b/platform/core-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt similarity index 100% rename from platform/indexing-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt rename to platform/core-impl/src/com/intellij/psi/stubs/StubElementRegistryServiceImpl.kt diff --git a/platform/indexing-api/api-dump-experimental.txt b/platform/indexing-api/api-dump-experimental.txt index 4b781a462e67..ad26dfd6f742 100644 --- a/platform/indexing-api/api-dump-experimental.txt +++ b/platform/indexing-api/api-dump-experimental.txt @@ -17,12 +17,6 @@ f:com.intellij.psi.search.IndexPattern - *:getWordToHighlight():java.lang.String a:com.intellij.psi.stubs.StubIndex - *a:getMaxContainingFileCount(com.intellij.psi.stubs.StubIndexKey,java.lang.Object,com.intellij.openapi.project.Project,com.intellij.psi.search.GlobalSearchScope):I -*:com.intellij.psi.stubs.StubRegistry -- a:registerLightStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.LightStubElementFactory):V -- a:registerStubFactory(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.StubElementFactory):V -- a:registerStubSerializer(com.intellij.psi.tree.IElementType,com.intellij.psi.stubs.ObjectStubSerializer):V -*:com.intellij.psi.stubs.StubRegistryExtension -- a:register(com.intellij.psi.stubs.StubRegistry):V *Fa:com.intellij.util.indexing.BuildableRootsChangeRescanningInfo - com.intellij.openapi.project.RootsChangeRescanningInfo - a:addInheritedSdk():com.intellij.util.indexing.BuildableRootsChangeRescanningInfo diff --git a/platform/indexing-api/resources/META-INF/Indexing.xml b/platform/indexing-api/resources/META-INF/Indexing.xml index 9ea945ec3bf8..0655b850e74f 100644 --- a/platform/indexing-api/resources/META-INF/Indexing.xml +++ b/platform/indexing-api/resources/META-INF/Indexing.xml @@ -35,10 +35,6 @@ - -