From 8d1d76cdae6e6ae7e8e6fdafd15282ca050d2ba9 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 8 Mar 2017 12:10:31 +0100 Subject: [PATCH] Try to recover from corrupt VFS data for a .kotlin_module file #KT-13135 Fixed --- .../jetbrains/kotlin/load/kotlin/ModuleMapping.kt | 14 +++++++++++++- .../idea/vfilefinder/KotlinModuleMappingIndex.kt | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt index 2417ae4b3b3..a6b55f54275 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/kotlin/ModuleMapping.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfigu import org.jetbrains.kotlin.serialization.jvm.JvmPackageTable import java.io.ByteArrayInputStream import java.io.DataInputStream +import java.io.IOException class ModuleMapping private constructor(val packageFqName2Parts: Map, private val debugName: String) { fun findPackageParts(packageFqName: String): PackageParts? { @@ -35,6 +36,9 @@ class ModuleMapping private constructor(val packageFqName2Parts: Map( val file = inputData.file try { val moduleMapping = ModuleMapping.create(content, file.toString(), DeserializationConfiguration.Default) + if (moduleMapping === ModuleMapping.CORRUPTED) { + file.refresh(true, false) + } return@DataIndexer moduleMapping.packageFqName2Parts } catch(e: Exception) {