diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt index 08bbde1bb92..ea11f4e1e5a 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/classFileUtils.kt @@ -36,7 +36,7 @@ private fun List.addCompiledParts(state: GenerationState): List") incrementalCache.getObsoletePackageParts().forEach { val i = it.lastIndexOf('/') diff --git a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt index 9554078558c..1050dc4f331 100644 --- a/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt +++ b/compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/JvmPackagePartProvider.kt @@ -16,7 +16,6 @@ package org.jetbrains.kotlin.cli.jvm.compiler -import com.intellij.openapi.vfs.VirtualFile import com.intellij.util.SmartList import org.jetbrains.kotlin.cli.jvm.config.JvmClasspathRoot import org.jetbrains.kotlin.config.JVMConfigurationKeys @@ -61,13 +60,13 @@ class JvmPackagePartProvider(val env: KotlinCoreEnvironment) : PackagePartProvid loadedModules.addAll(relevantRoots.mapNotNull { it.findChild("META-INF") }.flatMap { - it.children.filter { it.name.endsWith(ModuleMapping.MAPPING_FILE_EXT) } - }.map { + it.children.filter { it.name.endsWith(ModuleMapping.MAPPING_FILE_EXT) } + }.map { file -> try { - ModuleMapping.create(it.contentsToByteArray()) + ModuleMapping.create(file.contentsToByteArray(), file.toString()) } catch (e: EOFException) { - throw RuntimeException("Error on reading package parts for '$packageFqName' package in '$it', roots: $notLoadedRoots", e) + throw RuntimeException("Error on reading package parts for '$packageFqName' package in '$file', roots: $notLoadedRoots", e) } }) } diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt index 6384523d7df..b1b9fbd1db4 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackageFragmentProvider.kt @@ -90,7 +90,7 @@ class IncrementalPackageFragmentProvider( MemberScope.Empty } else { - val moduleMapping = incrementalCache.getModuleMappingData()?.let { ModuleMapping.create(it) } + val moduleMapping = incrementalCache.getModuleMappingData()?.let { ModuleMapping.create(it, "") } val actualPackagePartFiles = moduleMapping?.findPackageParts(fqName.asString())?.let { diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackagePartProvider.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackagePartProvider.kt index 2f0cb632a6b..8517b683f6c 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackagePartProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/load/kotlin/incremental/IncrementalPackagePartProvider.kt @@ -28,7 +28,11 @@ internal class IncrementalPackagePartProvider private constructor( incrementalCaches: List, storageManager: StorageManager ) : PackagePartProvider { - private val moduleMappings = storageManager.createLazyValue { incrementalCaches.map { ModuleMapping.create(it.getModuleMappingData()) } } + private val moduleMappings = storageManager.createLazyValue { + incrementalCaches.map { cache -> + ModuleMapping.create(cache.getModuleMappingData(), "") + } + } override fun findPackageParts(packageFqName: String): List { return (moduleMappings().mapNotNull { it.findPackageParts(packageFqName) }.flatMap { it.parts } + 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 c3cfc99a739..f0d8cfb51f4 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,20 +20,21 @@ import org.jetbrains.kotlin.serialization.jvm.JvmPackageTable import java.io.ByteArrayInputStream import java.io.DataInputStream -class ModuleMapping private constructor(val packageFqName2Parts: Map) { - +class ModuleMapping private constructor(val packageFqName2Parts: Map, private val debugName: String) { fun findPackageParts(packageFqName: String): PackageParts? { return packageFqName2Parts[packageFqName] } + override fun toString() = debugName + companion object { @JvmField val MAPPING_FILE_EXT: String = "kotlin_module" @JvmField - val EMPTY: ModuleMapping = ModuleMapping(emptyMap()) + val EMPTY: ModuleMapping = ModuleMapping(emptyMap(), "EMPTY") - fun create(proto: ByteArray? = null): ModuleMapping { + fun create(proto: ByteArray?, debugName: String?): ModuleMapping { if (proto == null) { return EMPTY } @@ -52,7 +53,7 @@ class ModuleMapping private constructor(val packageFqName2Parts: Map") } } else { diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt index 4dcd40eda9c..8c9a66cf23f 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/load/kotlin/reflect/RuntimePackagePartProvider.kt @@ -25,8 +25,9 @@ class RuntimePackagePartProvider(private val classLoader: ClassLoader) : Package fun registerModule(moduleName: String) { val mapping = try { - classLoader.getResourceAsStream("META-INF/$moduleName.${ModuleMapping.MAPPING_FILE_EXT}")?.use { stream -> - ModuleMapping.create(stream.readBytes()) + val resourcePath = "META-INF/$moduleName.${ModuleMapping.MAPPING_FILE_EXT}" + classLoader.getResourceAsStream(resourcePath)?.use { stream -> + ModuleMapping.create(stream.readBytes(), resourcePath) } } catch (e: Exception) { diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt index 1a3fdc711d6..b673ff20cbe 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/vfilefinder/moduleMappingIndexes.kt @@ -77,17 +77,16 @@ object KotlinModuleMappingIndex : FileBasedIndexExtension( override fun getVersion(): Int = 1 override fun getIndexer(): DataIndexer { - return object : DataIndexer { - override fun map(inputData: FileContent): Map { - val content = inputData.content - try { - val moduleMapping = ModuleMapping.create(content) - return moduleMapping.packageFqName2Parts - } catch(e : Exception) { - throw RuntimeException("Error on indexing ${inputData.file.path}", e) - } + return DataIndexer { inputData -> + val content = inputData.content + val file = inputData.file + try { + val moduleMapping = ModuleMapping.create(content, file.toString()) + return@DataIndexer moduleMapping.packageFqName2Parts + } + catch(e: Exception) { + throw RuntimeException("Error on indexing $file", e) } } } } -