diff --git a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java index 28c191c213a4..7a81586b454f 100644 --- a/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java +++ b/json/src/com/jetbrains/jsonSchema/impl/JsonSchemaFileValuesIndex.java @@ -24,7 +24,7 @@ import org.jetbrains.annotations.Nullable; import java.util.HashMap; import java.util.Map; -import static com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy.BEFORE_SUBSTITUTION; +import static com.intellij.util.indexing.hints.FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION; public class JsonSchemaFileValuesIndex extends FileBasedIndexExtension { public static final ID INDEX_ID = ID.create("json.file.root.values"); diff --git a/platform/indexing-impl/src/com/intellij/util/indexing/hints/BaseFileTypeInputFilter.kt b/platform/indexing-impl/src/com/intellij/util/indexing/hints/BaseFileTypeInputFilter.kt index 4f653f7254f9..72681b9a1e78 100644 --- a/platform/indexing-impl/src/com/intellij/util/indexing/hints/BaseFileTypeInputFilter.kt +++ b/platform/indexing-impl/src/com/intellij/util/indexing/hints/BaseFileTypeInputFilter.kt @@ -6,7 +6,6 @@ import com.intellij.util.ThreeState import com.intellij.util.indexing.FileBasedIndex import com.intellij.util.indexing.IndexedFile import com.intellij.util.indexing.SubstitutedFileType -import com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy import org.jetbrains.annotations.ApiStatus /** @@ -16,21 +15,20 @@ import org.jetbrains.annotations.ApiStatus * * If filetype is a [SubstitutedFileType] there are two options how to invoke [acceptFileType]: with filetype before substitution as * an argument ([SubstitutedFileType.getOriginalFileType]), or filetype after substitution ([SubstitutedFileType.getFileType]). - * Default behavior is to use filetype after substitution. This can be changed via [FileTypeStrategy] + * Default behavior is to use filetype after substitution. This can be changed via [FileTypeSubstitutionStrategy] * * @see com.intellij.psi.LanguageSubstitutor */ @ApiStatus.Experimental -abstract class BaseFileTypeInputFilter(private val fileTypeStrategy: FileTypeStrategy) : FileBasedIndex.ProjectSpecificInputFilter, - FileTypeIndexingHint { - enum class FileTypeStrategy { BEFORE_SUBSTITUTION, AFTER_SUBSTITUTION } +abstract class BaseFileTypeInputFilter(private val fileTypeStrategy: FileTypeSubstitutionStrategy) : FileBasedIndex.ProjectSpecificInputFilter, + FileTypeIndexingHint { - constructor() : this(FileTypeStrategy.AFTER_SUBSTITUTION) + constructor() : this(FileTypeSubstitutionStrategy.AFTER_SUBSTITUTION) final override fun hintAcceptFileType(fileType: FileType): ThreeState { val fileTypeToUse: FileType = if (fileType is SubstitutedFileType) { - if (fileTypeStrategy == FileTypeStrategy.BEFORE_SUBSTITUTION) fileType.originalFileType else fileType.fileType + if (fileTypeStrategy == FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION) fileType.originalFileType else fileType.fileType } else { fileType diff --git a/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeInputFilterPredicate.kt b/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeInputFilterPredicate.kt index bab8dc73b2a5..cc9c8beb44bc 100644 --- a/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeInputFilterPredicate.kt +++ b/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeInputFilterPredicate.kt @@ -18,7 +18,7 @@ class FileTypeInputFilterPredicate : BaseFileTypeInputFilter { this.predicate = predicate } - constructor(fileTypeStrategy: FileTypeStrategy, predicate: (filetype: FileType) -> Boolean) : super(fileTypeStrategy) { + constructor(fileTypeStrategy: FileTypeSubstitutionStrategy, predicate: (filetype: FileType) -> Boolean) : super(fileTypeStrategy) { this.predicate = predicate } diff --git a/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeSubstitutionStrategy.kt b/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeSubstitutionStrategy.kt new file mode 100644 index 000000000000..bee4e2f16064 --- /dev/null +++ b/platform/indexing-impl/src/com/intellij/util/indexing/hints/FileTypeSubstitutionStrategy.kt @@ -0,0 +1,17 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package com.intellij.util.indexing.hints + +import com.intellij.util.indexing.SubstitutedFileType + +/** + * [SubstitutedFileType] is an error-prone way to use filetype. Effectively it means that some file has two file types: + * before substitution ([SubstitutedFileType.getOriginalFileType]) and after substitution ([SubstitutedFileType.getFileType]). + * + * Client code often does not expect that it needs to deal with some artificial [SubstitutedFileType] that is not equal to + * any real filetype (e.g. JavaFileType). To simplify API, some classes (e.g. [BaseFileTypeInputFilter]) resolve + * [SubstitutedFileType] to real filetype. [FileTypeSubstitutionStrategy] defines the resolution strategy. + */ +enum class FileTypeSubstitutionStrategy { + BEFORE_SUBSTITUTION, + AFTER_SUBSTITUTION +} \ No newline at end of file diff --git a/plugins/htmltools/src/com/intellij/htmltools/html/HtmlTagIdIndex.java b/plugins/htmltools/src/com/intellij/htmltools/html/HtmlTagIdIndex.java index 0520dda5e1ec..055c532afb97 100644 --- a/plugins/htmltools/src/com/intellij/htmltools/html/HtmlTagIdIndex.java +++ b/plugins/htmltools/src/com/intellij/htmltools/html/HtmlTagIdIndex.java @@ -24,7 +24,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -import static com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy.BEFORE_SUBSTITUTION; +import static com.intellij.util.indexing.hints.FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION; public class HtmlTagIdIndex extends XmlIndex { public static final ID INDEX = ID.create("HtmlTagIdIndex"); diff --git a/python/python-psi-impl/src/com/jetbrains/python/psi/stubs/PyModuleNameIndex.java b/python/python-psi-impl/src/com/jetbrains/python/psi/stubs/PyModuleNameIndex.java index 04b92b76a990..5b522e50d35d 100644 --- a/python/python-psi-impl/src/com/jetbrains/python/psi/stubs/PyModuleNameIndex.java +++ b/python/python-psi-impl/src/com/jetbrains/python/psi/stubs/PyModuleNameIndex.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.NotNull; import java.util.*; -import static com.intellij.util.indexing.hints.BaseFileTypeInputFilter.FileTypeStrategy.BEFORE_SUBSTITUTION; +import static com.intellij.util.indexing.hints.FileTypeSubstitutionStrategy.BEFORE_SUBSTITUTION; public class PyModuleNameIndex extends ScalarIndexExtension { public static final ID NAME = ID.create("Py.module.name");