From 7f8e7c66f5b15117e57e6a3214c9f592bbfccd95 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Wed, 19 Jul 2017 18:20:03 +0300 Subject: [PATCH] Suppress FNFE in .kotlin_metadata index Similarly to VirtualFileKotlinClass.create. This could happen for example when some files are removed from kotlin-stdlib-common --- .../kotlin/idea/vfilefinder/IDEVirtualFileFinder.kt | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.kt index 3104105dc1c..36e62134a4d 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/IDEVirtualFileFinder.kt @@ -24,11 +24,19 @@ import com.intellij.util.indexing.ID import org.jetbrains.kotlin.load.kotlin.VirtualFileFinder import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName +import java.io.FileNotFoundException import java.io.InputStream class IDEVirtualFileFinder(private val scope: GlobalSearchScope) : VirtualFileFinder() { override fun findMetadata(classId: ClassId): InputStream? { - return findVirtualFileWithHeader(classId, KotlinMetadataFileIndex.KEY)?.inputStream + val file = findVirtualFileWithHeader(classId, KotlinMetadataFileIndex.KEY) ?: return null + + return try { + file.inputStream + } + catch (e: FileNotFoundException) { + null + } } override fun hasMetadataPackage(fqName: FqName): Boolean = KotlinMetadataFilePackageIndex.hasSomethingInPackage(fqName, scope)