Minor: change ScriptConfigurationCache.kt declarations order for better readability, more docs
This commit is contained in:
committed by
Natalia Selezneva
parent
fbb2b260dd
commit
61b17de625
+34
-30
@@ -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>>
|
||||
}
|
||||
Reference in New Issue
Block a user