IDEA-365317 decouple java psi and stubs using stub registry api

cherry-picked from 98da6acabfedf1e2bb0c023fb7c5580404c2b06a

GitOrigin-RevId: bdb613280310f9077ff622c5de4d60da5ab97c43
This commit is contained in:
Max Medvedev
2025-04-07 12:51:45 +02:00
committed by intellij-monorepo-bot
parent c5ca662b4b
commit 6711b3db7b
9 changed files with 24 additions and 18 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -89,7 +89,7 @@
<applicationService serviceInterface="com.intellij.openapi.vfs.VirtualFileSetFactory"
serviceImplementation="com.intellij.openapi.vfs.CompactVirtualFileSetFactory"/>
<applicationService serviceInterface="com.intellij.psi.stubs.StubElementRegistryService"
serviceImplementation="com.intellij.psi.stubs.CoreStubElementRegistryServiceImpl"/>
serviceImplementation="com.intellij.psi.stubs.StubElementRegistryServiceImpl"/>
<!-- must be a service because KotlinCodeBlockModificationListener requests it via constructor injection -->
<projectService serviceInterface="com.intellij.psi.PsiParserFacade"
serviceImplementation="com.intellij.psi.impl.PsiParserFacadeImpl"/>

View File

@@ -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);

View File

@@ -436,9 +436,19 @@ public class StubBasedPsiElementBase<T extends StubElement> 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 <S extends StubElement<?>, Psi extends PsiElement> Psi @NotNull [] getStubOrPsiChildren(@NotNull IStubElementType<S, ? extends Psi> elementType, @NotNull ArrayFactory<? extends Psi> 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 <S extends StubElement<?>, Psi extends PsiElement> Psi @NotNull [] getStubOrPsiChildren(@NotNull IElementType elementType, @NotNull ArrayFactory<? extends Psi> f) {
T stub = getGreenStub();
if (stub != null) {
//noinspection unchecked

View File

@@ -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

View File

@@ -35,10 +35,6 @@
</extensionPoints>
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceInterface="com.intellij.psi.stubs.StubElementRegistryService"
serviceImplementation="com.intellij.psi.stubs.StubElementRegistryServiceImpl"
overrides="true"/>
<fileBasedIndex implementation="com.intellij.psi.stubs.StubUpdatingIndex"/>
<fileBasedIndexLayout id="default"