Move CacheVersion properties to constructor
Original commit: aea6ad0f0c
This commit is contained in:
@@ -21,6 +21,7 @@ import org.jetbrains.jps.builders.BuildTarget
|
|||||||
import org.jetbrains.jps.builders.storage.BuildDataPaths
|
import org.jetbrains.jps.builders.storage.BuildDataPaths
|
||||||
import org.jetbrains.jps.incremental.ModuleBuildTarget
|
import org.jetbrains.jps.incremental.ModuleBuildTarget
|
||||||
import org.jetbrains.kotlin.config.IncrementalCompilation
|
import org.jetbrains.kotlin.config.IncrementalCompilation
|
||||||
|
import org.jetbrains.kotlin.jps.incremental.CacheVersion.Action
|
||||||
import org.jetbrains.kotlin.load.java.JvmAbi
|
import org.jetbrains.kotlin.load.java.JvmAbi
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -32,13 +33,15 @@ private val NORMAL_VERSION_FILE_NAME = "format-version.txt"
|
|||||||
private val EXPERIMENTAL_VERSION_FILE_NAME = "experimental-format-version.txt"
|
private val EXPERIMENTAL_VERSION_FILE_NAME = "experimental-format-version.txt"
|
||||||
private val DATA_CONTAINER_VERSION_FILE_NAME = "data-container-format-version.txt"
|
private val DATA_CONTAINER_VERSION_FILE_NAME = "data-container-format-version.txt"
|
||||||
|
|
||||||
sealed class CacheVersion {
|
class CacheVersion(
|
||||||
protected abstract val ownVersion: Int
|
private val ownVersion: Int,
|
||||||
protected abstract val versionFile: File
|
private val versionFile: File,
|
||||||
protected abstract val isEnabled: Boolean
|
private val whenVersionChanged: CacheVersion.Action,
|
||||||
protected abstract val whenVersionChanged: CacheVersion.Action
|
private val whenTurnedOn: CacheVersion.Action,
|
||||||
protected abstract val whenTurnedOn: CacheVersion.Action
|
private val whenTurnedOff: CacheVersion.Action,
|
||||||
protected abstract val whenTurnedOff: CacheVersion.Action
|
isEnabled: ()->Boolean
|
||||||
|
) {
|
||||||
|
private val isEnabled by lazy(isEnabled)
|
||||||
|
|
||||||
private val actualVersion: Int
|
private val actualVersion: Int
|
||||||
get() = versionFile.readText().toInt()
|
get() = versionFile.readText().toInt()
|
||||||
@@ -81,65 +84,35 @@ sealed class CacheVersion {
|
|||||||
CLEAN_DATA_CONTAINER,
|
CLEAN_DATA_CONTAINER,
|
||||||
DO_NOTHING
|
DO_NOTHING
|
||||||
}
|
}
|
||||||
|
|
||||||
class Normal(dir: File) : CacheVersion() {
|
|
||||||
override val ownVersion = NORMAL_VERSION
|
|
||||||
|
|
||||||
override val versionFile = File(dir, NORMAL_VERSION_FILE_NAME)
|
|
||||||
|
|
||||||
override val isEnabled: Boolean
|
|
||||||
get() = IncrementalCompilation.isEnabled()
|
|
||||||
|
|
||||||
override val whenVersionChanged = Action.REBUILD_CHUNK
|
|
||||||
|
|
||||||
override val whenTurnedOn = Action.REBUILD_CHUNK
|
|
||||||
|
|
||||||
override val whenTurnedOff = Action.CLEAN_NORMAL_CACHES
|
|
||||||
}
|
|
||||||
|
|
||||||
class Experimental(dir: File) : CacheVersion() {
|
|
||||||
override val ownVersion = EXPERIMENTAL_VERSION
|
|
||||||
|
|
||||||
override val versionFile = File(dir, EXPERIMENTAL_VERSION_FILE_NAME)
|
|
||||||
|
|
||||||
override val isEnabled: Boolean
|
|
||||||
get() = IncrementalCompilation.isExperimental()
|
|
||||||
|
|
||||||
override val whenVersionChanged = Action.REBUILD_CHUNK
|
|
||||||
|
|
||||||
override val whenTurnedOn = Action.REBUILD_CHUNK
|
|
||||||
|
|
||||||
override val whenTurnedOff = Action.CLEAN_EXPERIMENTAL_CACHES
|
|
||||||
}
|
|
||||||
|
|
||||||
class DataContainer(dir: File) : CacheVersion() {
|
|
||||||
override val ownVersion = DATA_CONTAINER_VERSION
|
|
||||||
|
|
||||||
override val versionFile = File(dir, DATA_CONTAINER_VERSION_FILE_NAME)
|
|
||||||
|
|
||||||
override val isEnabled: Boolean
|
|
||||||
get() = IncrementalCompilation.isExperimental()
|
|
||||||
|
|
||||||
override val whenVersionChanged = Action.REBUILD_ALL_KOTLIN
|
|
||||||
|
|
||||||
override val whenTurnedOn = Action.REBUILD_ALL_KOTLIN
|
|
||||||
|
|
||||||
override val whenTurnedOff = Action.CLEAN_DATA_CONTAINER
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class CacheVersionProvider(private val paths: BuildDataPaths) {
|
class CacheVersionProvider(private val paths: BuildDataPaths) {
|
||||||
protected val BuildTarget<*>.dataRoot: File
|
private val BuildTarget<*>.dataRoot: File
|
||||||
get() = paths.getTargetDataRoot(this)
|
get() = paths.getTargetDataRoot(this)
|
||||||
|
|
||||||
fun normalVersion(target: ModuleBuildTarget): CacheVersion =
|
fun normalVersion(target: ModuleBuildTarget): CacheVersion =
|
||||||
CacheVersion.Normal(target.dataRoot)
|
CacheVersion(ownVersion = NORMAL_VERSION,
|
||||||
|
versionFile = File(target.dataRoot, NORMAL_VERSION_FILE_NAME),
|
||||||
|
whenVersionChanged = Action.REBUILD_CHUNK,
|
||||||
|
whenTurnedOn = Action.REBUILD_CHUNK,
|
||||||
|
whenTurnedOff = Action.CLEAN_NORMAL_CACHES,
|
||||||
|
isEnabled = { IncrementalCompilation.isEnabled() })
|
||||||
|
|
||||||
fun experimentalVersion(target: ModuleBuildTarget): CacheVersion =
|
fun experimentalVersion(target: ModuleBuildTarget): CacheVersion =
|
||||||
CacheVersion.Experimental(target.dataRoot)
|
CacheVersion(ownVersion = EXPERIMENTAL_VERSION,
|
||||||
|
versionFile = File(target.dataRoot, EXPERIMENTAL_VERSION_FILE_NAME),
|
||||||
|
whenVersionChanged = Action.REBUILD_CHUNK,
|
||||||
|
whenTurnedOn = Action.REBUILD_CHUNK,
|
||||||
|
whenTurnedOff = Action.CLEAN_EXPERIMENTAL_CACHES,
|
||||||
|
isEnabled = { IncrementalCompilation.isExperimental() })
|
||||||
|
|
||||||
fun dataContainerVersion(): CacheVersion =
|
fun dataContainerVersion(): CacheVersion =
|
||||||
CacheVersion.DataContainer(KotlinDataContainerTarget.dataRoot)
|
CacheVersion(ownVersion = DATA_CONTAINER_VERSION,
|
||||||
|
versionFile = File(KotlinDataContainerTarget.dataRoot, DATA_CONTAINER_VERSION_FILE_NAME),
|
||||||
|
whenVersionChanged = Action.REBUILD_ALL_KOTLIN,
|
||||||
|
whenTurnedOn = Action.REBUILD_ALL_KOTLIN,
|
||||||
|
whenTurnedOff = Action.CLEAN_DATA_CONTAINER,
|
||||||
|
isEnabled = { IncrementalCompilation.isExperimental() })
|
||||||
|
|
||||||
fun allVersions(targets: Iterable<ModuleBuildTarget>): Iterable<CacheVersion> {
|
fun allVersions(targets: Iterable<ModuleBuildTarget>): Iterable<CacheVersion> {
|
||||||
val versions = arrayListOf<CacheVersion>()
|
val versions = arrayListOf<CacheVersion>()
|
||||||
|
|||||||
Reference in New Issue
Block a user