diff --git a/idea/scripting-support/test/org/jetbrains/kotlin/idea/script/AbstractScriptTemplatesFromDependenciesTest.kt b/idea/scripting-support/test/org/jetbrains/kotlin/idea/script/AbstractScriptTemplatesFromDependenciesTest.kt index ba54c186db5..819e38c4209 100644 --- a/idea/scripting-support/test/org/jetbrains/kotlin/idea/script/AbstractScriptTemplatesFromDependenciesTest.kt +++ b/idea/scripting-support/test/org/jetbrains/kotlin/idea/script/AbstractScriptTemplatesFromDependenciesTest.kt @@ -78,8 +78,8 @@ abstract class AbstractScriptTemplatesFromDependenciesTest : HeavyPlatformTestCa } val roots: Collection = FileBasedIndex.getInstance().getContainingFiles( - ScriptTemplatesClassRootsIndex.KEY, - ScriptTemplatesClassRootsIndex.VALUE, + ScriptTemplatesClassRootsIndex.NAME, + Unit, GlobalSearchScope.allScope(project) ) diff --git a/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt b/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt index 736c3fc365d..5381f3fc4cb 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesClassRootsIndex.kt @@ -13,33 +13,38 @@ import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_EXTE import org.jetbrains.kotlin.scripting.definitions.SCRIPT_DEFINITION_MARKERS_PATH import java.io.DataInput import java.io.DataOutput -import java.util.* + +object UnitKey : KeyDescriptor { + override fun getHashCode(value: Unit) = 0 + override fun isEqual(val1: Unit, val2: Unit) = true + override fun save(out: DataOutput, value: Unit?) = Unit + override fun read(`in`: DataInput) = Unit +} + +abstract class FileListIndex : + ScalarIndexExtension(), + DataIndexer { + + override fun getIndexer() = this + override fun getKeyDescriptor() = UnitKey + override fun dependsOnFileContent() = false + override fun map(inputData: FileContent) = mapOf(Unit to null) +} class ScriptTemplatesClassRootsIndex : - ScalarIndexExtension(), - FileBasedIndex.InputFilter, KeyDescriptor, - DataIndexer { + FileListIndex(), + FileBasedIndex.InputFilter { companion object { - val KEY = ID.create(ScriptTemplatesClassRootsIndex::class.java.canonicalName) + val NAME = ID.create(ScriptTemplatesClassRootsIndex::class.java.canonicalName) const val VALUE = "MY_VALUE" - private val suffix = SCRIPT_DEFINITION_MARKERS_PATH.removeSuffix("/") } - override fun getName(): ID = KEY - - override fun getIndexer(): DataIndexer = this - - override fun getKeyDescriptor(): KeyDescriptor = this - - override fun getInputFilter(): FileBasedIndex.InputFilter = this - - override fun dependsOnFileContent() = false - - override fun getVersion(): Int = 2 - + override fun getName() = NAME + override fun getVersion(): Int = 3 override fun indexDirectories(): Boolean = false + override fun getInputFilter(): FileBasedIndex.InputFilter = this override fun acceptInput(file: VirtualFile): Boolean { val parent = file.parent ?: return false @@ -47,18 +52,4 @@ class ScriptTemplatesClassRootsIndex : && parent.path.endsWith(suffix) && file.path.endsWith(SCRIPT_DEFINITION_MARKERS_EXTENSION_WITH_DOT) } - - override fun save(out: DataOutput, value: String) = IOUtil.writeUTF(out, value) - - override fun read(input: DataInput): String? = IOUtil.readUTF(input) - - override fun getHashCode(value: String): Int = value.hashCode() - - override fun isEqual(val1: String?, val2: String?): Boolean { - return val1 == val2 - } - - override fun map(inputData: FileContent): Map { - return Collections.singletonMap(VALUE, null) - } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesFromDependenciesProvider.kt b/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesFromDependenciesProvider.kt index e8936f1b06d..a6a6b025fdf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesFromDependenciesProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/script/ScriptTemplatesFromDependenciesProvider.kt @@ -106,8 +106,8 @@ class ScriptTemplatesFromDependenciesProvider(private val project: Project) : Sc ReadAction .nonBlocking> { FileBasedIndex.getInstance().getContainingFiles( - ScriptTemplatesClassRootsIndex.KEY, - ScriptTemplatesClassRootsIndex.VALUE, + ScriptTemplatesClassRootsIndex.NAME, + Unit, GlobalSearchScope.allScope(project) ).filterNotNull() }