IJPL-797 IJPL-149755 intellij.platform.indexing review internal API

GitOrigin-RevId: 1cae3d363977157d10f3f9122b9bcb16285669e0
This commit is contained in:
Liudmila Kornilova
2024-06-20 15:23:24 +02:00
committed by intellij-monorepo-bot
parent 28cdb7f9ae
commit 8d776f4bc6
18 changed files with 50 additions and 58 deletions

View File

@@ -2,11 +2,13 @@
package com.intellij.util;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.ApiStatus.OverrideOnly;
import org.jetbrains.annotations.Nullable;
/**
* An interface to be (optionally, but preferably) implemented by {@link QueryExecutor} parameters to provide additional data.
*/
@OverrideOnly
public interface QueryParameters {
default @Nullable Project getProject() {
return null;

View File

@@ -118,13 +118,13 @@ a:com.intellij.lang.cacheBuilder.VersionedWordsScanner
- com.intellij.lang.cacheBuilder.WordsScanner
- <init>():V
- getVersion():I
c:com.intellij.lang.cacheBuilder.WordOccurrence
f:com.intellij.lang.cacheBuilder.WordOccurrence
- <init>(java.lang.CharSequence,I,I,com.intellij.lang.cacheBuilder.WordOccurrence$Kind):V
- getBaseText():java.lang.CharSequence
- getEnd():I
- getKind():com.intellij.lang.cacheBuilder.WordOccurrence$Kind
- getStart():I
- f:init(java.lang.CharSequence,I,I,com.intellij.lang.cacheBuilder.WordOccurrence$Kind):V
- init(java.lang.CharSequence,I,I,com.intellij.lang.cacheBuilder.WordOccurrence$Kind):V
f:com.intellij.lang.cacheBuilder.WordOccurrence$Kind
- sf:CODE:com.intellij.lang.cacheBuilder.WordOccurrence$Kind
- sf:COMMENTS:com.intellij.lang.cacheBuilder.WordOccurrence$Kind
@@ -134,7 +134,6 @@ f:com.intellij.lang.cacheBuilder.WordOccurrence$Kind
com.intellij.lang.cacheBuilder.WordsScanner
- a:processWords(java.lang.CharSequence,com.intellij.util.Processor):V
f:com.intellij.lang.findUsages.DescriptiveNameUtil
- <init>():V
- s:getDescriptiveName(com.intellij.psi.PsiElement):java.lang.String
- s:getMetaDataName(com.intellij.psi.meta.PsiMetaData):java.lang.String
c:com.intellij.lang.findUsages.EmptyFindUsagesProvider
@@ -234,7 +233,6 @@ f:com.intellij.psi.impl.cache.CacheManager$SERVICE
- s:getInstance(com.intellij.openapi.project.Project):com.intellij.psi.impl.cache.CacheManager
f:com.intellij.psi.search.FileTypeIndex
- *sf:INDEX_CHANGE_TOPIC:com.intellij.util.messages.Topic
- <init>():V
- s:containsFileOfType(com.intellij.openapi.fileTypes.FileType,com.intellij.psi.search.GlobalSearchScope):Z
- s:getFiles(com.intellij.openapi.fileTypes.FileType,com.intellij.psi.search.GlobalSearchScope):java.util.Collection
- s:getIndexedFileType(com.intellij.openapi.vfs.VirtualFile,com.intellij.openapi.project.Project):com.intellij.openapi.fileTypes.FileType
@@ -242,7 +240,6 @@ f:com.intellij.psi.search.FileTypeIndex
*:com.intellij.psi.search.FileTypeIndex$IndexChangeListener
- a:onChangedForFileType(com.intellij.openapi.fileTypes.FileType):V
f:com.intellij.psi.search.FilenameIndex
- <init>():V
- s:getAllFilenames(com.intellij.openapi.project.Project):java.lang.String[]
- s:getAllFilesByExt(com.intellij.openapi.project.Project,java.lang.String):java.util.Collection
- s:getAllFilesByExt(com.intellij.openapi.project.Project,java.lang.String,com.intellij.psi.search.GlobalSearchScope):java.util.Collection
@@ -257,7 +254,7 @@ f:com.intellij.psi.search.FilenameIndex
- s:processFilesByName(java.lang.String,Z,com.intellij.util.Processor,com.intellij.psi.search.GlobalSearchScope,com.intellij.openapi.project.Project):Z
- s:processFilesByName(java.lang.String,Z,com.intellij.util.Processor,com.intellij.psi.search.GlobalSearchScope,com.intellij.openapi.project.Project,com.intellij.util.indexing.IdFilter):Z
- s:processFilesByNames(java.util.Set,Z,com.intellij.psi.search.GlobalSearchScope,com.intellij.util.indexing.IdFilter,com.intellij.util.Processor):Z
c:com.intellij.psi.search.IndexPattern
f:com.intellij.psi.search.IndexPattern
- sf:EMPTY_ARRAY:com.intellij.psi.search.IndexPattern[]
- <init>(java.lang.String,Z):V
- equals(java.lang.Object):Z
@@ -343,7 +340,7 @@ com.intellij.psi.search.PsiTodoSearchHelper
- a:processFilesWithTodoItems(com.intellij.util.Processor):Z
f:com.intellij.psi.search.PsiTodoSearchHelper$SERVICE
- s:getInstance(com.intellij.openapi.project.Project):com.intellij.psi.search.PsiTodoSearchHelper
c:com.intellij.psi.search.QuerySearchRequest
f:com.intellij.psi.search.QuerySearchRequest
- f:collector:com.intellij.psi.search.SearchRequestCollector
- f:processor:com.intellij.util.Processor
- f:query:com.intellij.util.Query
@@ -354,12 +351,6 @@ a:com.intellij.psi.search.RequestResultProcessor
- equals(java.lang.Object):Z
- hashCode():I
- a:processTextOccurrence(com.intellij.psi.PsiElement,I,com.intellij.util.Processor):Z
a:com.intellij.psi.search.RequestResultProcessor$BulkResultProcessor
- com.intellij.psi.search.RequestResultProcessor
- <init>():V
- <init>(java.lang.Object[]):V
- processTextOccurrence(com.intellij.psi.PsiElement,I,com.intellij.util.Processor):Z
- a:processTextOccurrences(com.intellij.psi.PsiElement,I[],com.intellij.util.Processor):Z
com.intellij.psi.search.ScopeOptimizer
- s:calculateOverallRestrictedUseScope(java.util.List,com.intellij.psi.PsiElement):com.intellij.psi.search.SearchScope
- getRestrictedUseScope(com.intellij.psi.PsiElement):com.intellij.psi.search.SearchScope
@@ -380,7 +371,7 @@ c:com.intellij.psi.search.SearchRequestQuery
- com.intellij.util.AbstractQuery
- <init>(com.intellij.openapi.project.Project,com.intellij.psi.search.SearchRequestCollector):V
- p:processResults(com.intellij.util.Processor):Z
c:com.intellij.psi.search.SearchSession
f:com.intellij.psi.search.SearchSession
- com.intellij.openapi.util.UserDataHolderBase
- <init>():V
- <init>(com.intellij.psi.PsiElement[]):V
@@ -412,9 +403,7 @@ com.intellij.psi.search.TodoItem
- a:getTextRange():com.intellij.openapi.util.TextRange
f:com.intellij.psi.search.TodoPattern
- java.lang.Cloneable
- <init>(com.intellij.psi.search.TodoAttributes):V
- <init>(java.lang.String,com.intellij.psi.search.TodoAttributes,Z):V
- <init>(org.jdom.Element,com.intellij.openapi.editor.markup.TextAttributes):V
- clone():com.intellij.psi.search.TodoPattern
- equals(java.lang.Object):Z
- getAttributes():com.intellij.psi.search.TodoAttributes
@@ -502,7 +491,6 @@ a:com.intellij.psi.stubs.StringStubIndexExtension
- getVersion():I
- traceKeyHashToVirtualFileMapping():Z
a:com.intellij.psi.stubs.StubIndex
- <init>():V
- a:forceRebuild(java.lang.Throwable):V
- a:getAllKeys(com.intellij.psi.stubs.StubIndexKey,com.intellij.openapi.project.Project):java.util.Collection
- getContainingFiles(com.intellij.psi.stubs.StubIndexKey,java.lang.Object,com.intellij.openapi.project.Project,com.intellij.psi.search.GlobalSearchScope):java.util.Set

View File

@@ -12,7 +12,7 @@ import org.jetbrains.annotations.TestOnly;
* @author max
*/
public class WordOccurrence {
public final class WordOccurrence {
private Kind myKind;
private CharSequence myText;
private int myStart;
@@ -40,7 +40,7 @@ public class WordOccurrence {
* @param end end offset in initial char sequence.
* @param kind The type of text where the word was encountered (code, comments or literals).
*/
public final void init(final CharSequence text, int start, int end, @Nullable final Kind kind) {
public void init(final CharSequence text, int start, int end, @Nullable final Kind kind) {
myKind = kind;
myText = text;
myStart = start;

View File

@@ -12,6 +12,9 @@ import org.jetbrains.annotations.NotNull;
public final class DescriptiveNameUtil {
private DescriptiveNameUtil() {
}
@NotNull
public static @NlsSafe String getMetaDataName(@NotNull PsiMetaData metaData) {
String name = metaData.getName();

View File

@@ -10,8 +10,9 @@ import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.FileBasedIndex;
import com.intellij.util.indexing.ID;
import com.intellij.util.messages.Topic;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.ApiStatus.Experimental;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.ApiStatus.OverrideOnly;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -23,6 +24,10 @@ import java.util.Map;
* @author Dmitry Avdeev
*/
public final class FileTypeIndex {
private FileTypeIndex() {
}
/**
* @deprecated please don't use this index directly.
*
@@ -60,12 +65,13 @@ public final class FileTypeIndex {
return true;
}
@ApiStatus.Experimental
@Experimental
@Topic.AppLevel
public static final Topic<IndexChangeListener> INDEX_CHANGE_TOPIC =
new Topic<>(IndexChangeListener.class, Topic.BroadcastDirection.TO_DIRECT_CHILDREN);
@ApiStatus.Experimental
@Experimental
@OverrideOnly
public interface IndexChangeListener {
/**
* This event means that the set of files corresponding to the {@code fileType} has changed

View File

@@ -29,6 +29,9 @@ public final class FilenameIndex {
@ApiStatus.Internal
public static final ID<String, Void> NAME = ID.create("FilenameIndex");
private FilenameIndex() {
}
private static class CancellationChecker{
private int iterationNo;

View File

@@ -15,7 +15,7 @@ import java.util.regex.PatternSyntaxException;
* A single pattern the occurrences of which in comments are indexed by IDEA.
* @see IndexPatternProvider#getIndexPatterns()
*/
public class IndexPattern {
public final class IndexPattern {
public static final IndexPattern[] EMPTY_ARRAY = new IndexPattern[0];

View File

@@ -8,7 +8,7 @@ import com.intellij.util.Processor;
import com.intellij.util.Query;
import org.jetbrains.annotations.NotNull;
public class QuerySearchRequest {
public final class QuerySearchRequest {
public final Query<PsiReference> query;
public final SearchRequestCollector collector;
public final Processor<? super PsiReference> processor;

View File

@@ -44,35 +44,7 @@ public abstract class RequestResultProcessor {
* occurrence inside, from leaf elements up the tree until file element. The implementation is supposed to search for references
* inside the given element at the given offset, and feed them to {@code consumer}.<p/>
*
* If you wish to process all offsets in the scope (e.g. file) at once, extend {@link BulkResultProcessor}.
*
* @return whether the consumer has returned false for any of the references (and thus stopped searching), false otherwise.
*/
public abstract boolean processTextOccurrence(@NotNull PsiElement element, int offsetInElement, @NotNull Processor<? super PsiReference> consumer);
/**
* A variant of {@link RequestResultProcessor} that processes all text occurrences at once, e.g. for performance purposes.
*/
public abstract static class BulkResultProcessor extends RequestResultProcessor {
public BulkResultProcessor() {
}
public BulkResultProcessor(Object @NotNull ... equality) {
super(equality);
}
@Override
public boolean processTextOccurrence(@NotNull PsiElement element, int offsetInElement, @NotNull Processor<? super PsiReference> consumer) {
return processTextOccurrences(element, new int[]{offsetInElement}, consumer);
}
/**
* Invoked for every element of the search scope (e.g. file) with the array of all offsets of search string occurrences in this scope.
* Offsets are relative to {@code scope} start offset. The implementation is supposed to search for references
* inside the given element at the given offsets, and feed them to {@code consumer}.<p/>
* @return whether the consumer has returned false for any of the references (and thus stopped searching), false otherwise.
*/
public abstract boolean processTextOccurrences(@NotNull PsiElement scope, int[] offsetsInScope, @NotNull Processor<? super PsiReference> consumer);
}
}

View File

@@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull;
import java.util.List;
public class SearchSession extends UserDataHolderBase {
public final class SearchSession extends UserDataHolderBase {
private final PsiElement[] myElements;
public SearchSession() {

View File

@@ -6,6 +6,7 @@ import com.intellij.openapi.editor.markup.TextAttributes;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.NlsSafe;
import org.jdom.Element;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -22,10 +23,12 @@ public final class TodoPattern implements Cloneable {
private static final @NonNls String CASE_SENS_ATT = "case-sensitive";
private static final @NonNls String PATTERN_ATT = "pattern";
@Internal
public TodoPattern(@NotNull TodoAttributes attributes) {
this("", attributes, false);
}
@Internal
public TodoPattern(@NotNull Element state, @NotNull TextAttributes defaultTodoAttributes) {
attributes = new TodoAttributes(state, defaultTodoAttributes);
indexPattern = new IndexPattern(state.getAttributeValue(PATTERN_ATT, "").trim(),

View File

@@ -4,6 +4,7 @@ package com.intellij.psi.search;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.ApiStatus.OverrideOnly;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -14,6 +15,7 @@ import org.jetbrains.annotations.Nullable;
*
* @see PsiSearchHelper#getUseScope(PsiElement)
*/
@OverrideOnly
public abstract class UseScopeEnlarger {
@ApiStatus.Internal
public static final ExtensionPointName<UseScopeEnlarger> EP_NAME = ExtensionPointName.create("com.intellij.useScopeEnlarger");

View File

@@ -21,6 +21,7 @@ package com.intellij.psi.stubs;
import com.intellij.psi.PsiElement;
import com.intellij.util.io.KeyDescriptor;
import org.jetbrains.annotations.ApiStatus.OverrideOnly;
import org.jetbrains.annotations.NotNull;
public abstract class CharSequenceHashStubIndexExtension<Psi extends PsiElement> extends AbstractStubIndex<CharSequence, Psi> {
@@ -36,6 +37,7 @@ public abstract class CharSequenceHashStubIndexExtension<Psi extends PsiElement>
return CharSequenceHashInlineKeyDescriptor.INSTANCE;
}
@OverrideOnly
public boolean doesKeyMatchPsi(@NotNull CharSequence key, @NotNull Psi psi) {
return true;
}

View File

@@ -15,6 +15,7 @@ import com.intellij.util.SmartList;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.IdFilter;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -31,6 +32,10 @@ public abstract class StubIndex {
return ourInstance.get();
}
@Internal
public StubIndex() {
}
/**
* @deprecated use {@link #getElements(StubIndexKey, Object, Project, GlobalSearchScope, Class)}
*/
@@ -142,11 +147,11 @@ public abstract class StubIndex {
* this tracker to react on stub changes without performing the index update. File is considered modified if a stub for its actual content
* differs from what is stored in the index. Modification detector might react false-positively when the number of changed files is big.
*/
@ApiStatus.Internal
@Internal
@ApiStatus.Experimental
public abstract @NotNull ModificationTracker getPerFileElementTypeModificationTracker(@NotNull StubFileElementType<?> fileElementType);
@ApiStatus.Internal
@Internal
@ApiStatus.Experimental
public abstract @NotNull ModificationTracker getStubIndexModificationTracker(@NotNull Project project);
}

View File

@@ -6,12 +6,14 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.PsiFile;
import com.intellij.util.NullableFunction;
import com.intellij.util.io.DataExternalizer;
import org.jetbrains.annotations.ApiStatus.NonExtendable;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
/**
* A helper class for working with file gists: associating persistent data with current VFS or PSI file contents.
*/
@NonExtendable
public abstract class GistManager {
@NotNull
public static GistManager getInstance() {

View File

@@ -4,6 +4,7 @@ package com.intellij.util.indexing;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.Consumer;
import org.jetbrains.annotations.ApiStatus.OverrideOnly;
import org.jetbrains.annotations.NotNull;
/**
@@ -13,6 +14,7 @@ import org.jetbrains.annotations.NotNull;
* Override {@link #acceptInput(VirtualFile)} for additional filtering (e.g., file location, fixed filenames,
* original file type).
*/
@OverrideOnly
public class DefaultFileTypeSpecificInputFilter implements FileBasedIndex.FileTypeSpecificInputFilter {
private final FileType[] myFileTypes;

View File

@@ -22,6 +22,8 @@ import com.intellij.util.Processor;
import com.intellij.util.SystemProperties;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.ApiStatus.Internal;
import org.jetbrains.annotations.ApiStatus.NonExtendable;
import org.jetbrains.annotations.ApiStatus.OverrideOnly;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -31,6 +33,7 @@ import java.util.*;
* @see FileBasedIndexExtension
* @author dmitrylomov
*/
@NonExtendable
public abstract class FileBasedIndex {
public abstract void iterateIndexableFiles(@NotNull ContentIterator processor, @NotNull Project project, @Nullable ProgressIndicator indicator);
@@ -351,6 +354,7 @@ public abstract class FileBasedIndex {
* And the only use case is to optimize indexed file count when the corresponding indexer is relatively slow.
*/
@ApiStatus.Experimental
@OverrideOnly
public interface ProjectSpecificInputFilter extends InputFilter {
@Override
default boolean acceptInput(@NotNull VirtualFile file) {
@@ -364,6 +368,7 @@ public abstract class FileBasedIndex {
/**
* @see DefaultFileTypeSpecificInputFilter
*/
@OverrideOnly
public interface FileTypeSpecificInputFilter extends InputFilter {
void registerFileTypesUsedForIndexing(@NotNull Consumer<? super FileType> fileTypeSink);
}

View File

@@ -1090,9 +1090,6 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
@Override
public boolean execute(@NotNull PsiElement scope, int @NotNull [] offsetsInScope, @NotNull StringSearcher searcher) {
ProgressManager.checkCanceled();
if (wrapped instanceof RequestResultProcessor.BulkResultProcessor) {
return ((RequestResultProcessor.BulkResultProcessor)wrapped).processTextOccurrences(scope, offsetsInScope, consumer);
}
return LowLevelSearchUtil.processElementsAtOffsets(scope, searcher, !ignoreInjectedPsi,
getOrCreateIndicator(), offsetsInScope,