diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsSourceFileToPathConverter.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsSourceFileToPathConverter.kt new file mode 100644 index 00000000000..104a9147f7d --- /dev/null +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/JpsSourceFileToPathConverter.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.jps.build + +import org.jetbrains.jps.model.JpsProject +import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService +import org.jetbrains.kotlin.incremental.storage.SourceFileToPathConverter +import java.io.File + +private const val PROJECT_DIR_PLACEHOLDER = "${'$'}PROJECT_DIR$" + +internal class JpsSourceFileToPathConverter(jpsProject: JpsProject) : SourceFileToPathConverter { + private val baseDirPath = JpsModelSerializationDataService + .getBaseDirectory(jpsProject)?.canonicalFile?.invariantSeparatorsPath + + override fun toPath(file: File): String { + val path = file.canonicalFile.invariantSeparatorsPath + return when { + baseDirPath != null && path.startsWith(baseDirPath) -> + PROJECT_DIR_PLACEHOLDER + path.substring(baseDirPath.length) + else -> path + } + } + + override fun toFile(path: String): File = + when { + path.startsWith(PROJECT_DIR_PLACEHOLDER) -> { + val basePath = baseDirPath ?: error("Could not get project root dir") + File(basePath + path.substring(PROJECT_DIR_PLACEHOLDER.length)) + } + else -> File(path) + } +} \ No newline at end of file diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinCompileContext.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinCompileContext.kt index 604ac019265..380517127b3 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinCompileContext.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinCompileContext.kt @@ -12,6 +12,7 @@ import org.jetbrains.jps.incremental.GlobalContextKey import org.jetbrains.jps.incremental.fs.CompilationRound import org.jetbrains.jps.incremental.messages.BuildMessage import org.jetbrains.jps.incremental.messages.CompilerMessage +import org.jetbrains.jps.model.serialization.JpsModelSerializationDataService import org.jetbrains.kotlin.config.CompilerRunnerConstants import org.jetbrains.kotlin.incremental.LookupSymbol import org.jetbrains.kotlin.incremental.storage.SourceFileToCanonicalPathConverter @@ -68,7 +69,8 @@ class KotlinCompileContext(val jpsContext: CompileContext) { val hasKotlinMarker = HasKotlinMarker(dataManager) - val sourceFileToPathConverter: SourceFileToPathConverter = SourceFileToCanonicalPathConverter + val sourceFileToPathConverter: SourceFileToPathConverter = + JpsSourceFileToPathConverter(jpsContext.projectDescriptor.project) val lookupStorageManager = JpsLookupStorageManager(dataManager, sourceFileToPathConverter) diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/local.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/local.kt index 59eeffbcc9b..70bba8d67b9 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/local.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/local.kt @@ -7,7 +7,7 @@ package org.jetbrains.kotlin.jps.incremental import java.io.File -private val NORMAL_VERSION = 11 +private val NORMAL_VERSION = 12 private val NORMAL_VERSION_FILE_NAME = "format-version.txt" fun localCacheVersionManager(dataRoot: File, isCachesEnabled: Boolean) = diff --git a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/lookups.kt b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/lookups.kt index 8821c18afc2..8c2e26ab3e6 100644 --- a/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/lookups.kt +++ b/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/lookups.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.jps.incremental import java.io.File private val DATA_CONTAINER_VERSION_FILE_NAME = "data-container-format-version.txt" -private val DATA_CONTAINER_VERSION = 4 +private val DATA_CONTAINER_VERSION = 5 fun lookupsCacheVersionManager(dataRoot: File, isEnabled: Boolean) = CacheVersionManager(