Minor: change ScriptConfigurationCache.kt declarations order for better readability, more docs

This commit is contained in:
Sergey Rostov
2019-11-04 13:39:58 +03:00
committed by Natalia Selezneva
parent fbb2b260dd
commit 61b17de625
@@ -11,6 +11,40 @@ import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.scripting.resolve.ScriptCompilationConfigurationWrapper
import kotlin.script.experimental.api.ScriptDiagnostic
/**
* Cached configurations for the file's specific snapshot state.
*
* The writer should put related inputs snapshot for loaded configuration.
* This would allow making up-to-date checks for existed entry.
*
* The configuration may be loaded but not applied. So, it makes
* sense to do up-to-date check on loaded configuration (not on applied).
* For those reasons, we are storing both for each file.
*/
interface ScriptConfigurationCache {
operator fun get(file: VirtualFile): ScriptConfigurationState?
fun setApplied(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
fun markOutOfDate(file: VirtualFile)
fun allApplied(): Collection<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>>
}
data class ScriptConfigurationState(
val applied: ScriptConfigurationSnapshot? = null,
val loaded: ScriptConfigurationSnapshot? = null
) {
fun isUpToDate(project: Project, file: VirtualFile, ktFile: KtFile? = null): Boolean =
(loaded ?: applied)?.inputs?.isUpToDate(project, file, ktFile) ?: false
}
data class ScriptConfigurationSnapshot(
val inputs: CachedConfigurationInputs,
val reports: List<ScriptDiagnostic>,
val configuration: ScriptCompilationConfigurationWrapper?
)
interface CachedConfigurationInputs {
fun isUpToDate(project: Project, file: VirtualFile, ktFile: KtFile? = null): Boolean
@@ -22,34 +56,4 @@ interface CachedConfigurationInputs {
override fun isUpToDate(project: Project, file: VirtualFile, ktFile: KtFile?): Boolean =
ktFile?.modificationStamp == modificationStamp
}
}
data class ScriptConfigurationSnapshot(
val inputs: CachedConfigurationInputs,
val reports: List<ScriptDiagnostic>,
val configuration: ScriptCompilationConfigurationWrapper?
)
data class ScriptConfigurationState(
val applied: ScriptConfigurationSnapshot? = null,
val loaded: ScriptConfigurationSnapshot? = null
) {
fun isUpToDate(project: Project, file: VirtualFile, ktFile: KtFile? = null): Boolean =
(loaded ?: applied)?.inputs?.isUpToDate(project, file, ktFile) ?: false
}
/**
* Cached configurations for file's specific snapshot state.
*
* Writer should put related inputs snapshot for loaded configuration.
* Reader may do up-to-date check for existed entry.
*/
interface ScriptConfigurationCache {
operator fun get(file: VirtualFile): ScriptConfigurationState?
fun setApplied(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
fun setLoaded(file: VirtualFile, configurationSnapshot: ScriptConfigurationSnapshot)
fun markOutOfDate(file: VirtualFile)
fun allApplied(): Collection<Pair<VirtualFile, ScriptCompilationConfigurationWrapper>>
}