Fix CCE caused by KotlinPackageSourcesMemberNamesIndex
FileContentImpl::getPsiFile is not-nullable and at the same time it contains an explicit case of its fileType to LanguageFileType that leads to the following exception in case when kt-file is marked as plain text: java.lang.ClassCastException: com.intellij.openapi.file.exclude.EnforcedPlainTextFileTypeFactory$1 cannot be cast to com.intellij.openapi.fileTypes.LanguageFileType at com.intellij.util.indexing.FileContentImpl.createFileFromText(FileContentImpl.java:135) at com.intellij.util.indexing.FileContentImpl.getPsiFile(FileContentImpl.java:104) #EA-114338 Fixed
This commit is contained in:
+4
-1
@@ -30,10 +30,13 @@ object KotlinPackageSourcesMemberNamesIndex : FileBasedIndexExtension<String, Co
|
|||||||
override fun getInputFilter(): FileBasedIndex.InputFilter =
|
override fun getInputFilter(): FileBasedIndex.InputFilter =
|
||||||
FileBasedIndex.InputFilter { file -> file.extension == KotlinFileType.EXTENSION }
|
FileBasedIndex.InputFilter { file -> file.extension == KotlinFileType.EXTENSION }
|
||||||
|
|
||||||
override fun getVersion(): Int = 1
|
override fun getVersion(): Int = 2
|
||||||
|
|
||||||
override fun getIndexer(): DataIndexer<String, Collection<String>, FileContent> =
|
override fun getIndexer(): DataIndexer<String, Collection<String>, FileContent> =
|
||||||
DataIndexer { inputData ->
|
DataIndexer { inputData ->
|
||||||
|
// Check if ".kt" file is marked as plain text
|
||||||
|
if (inputData.fileType !is KotlinFileType) return@DataIndexer emptyMap()
|
||||||
|
|
||||||
val ktFile = inputData.psiFile as? KtFile ?: return@DataIndexer emptyMap()
|
val ktFile = inputData.psiFile as? KtFile ?: return@DataIndexer emptyMap()
|
||||||
val packageName = ktFile.packageDirective?.fqName?.asString() ?: ""
|
val packageName = ktFile.packageDirective?.fqName?.asString() ?: ""
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user