Skip to content

Commit 7aee51f

Browse files
committed
Refactor ScriptDependenciesUpdater: improve readability a bit
1 parent c0e08c6 commit 7aee51f

File tree

1 file changed

+13
-14
lines changed

1 file changed

+13
-14
lines changed

idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,16 @@ internal class ScriptDependenciesUpdater(
5151
listenToVfsChanges()
5252
}
5353

54-
private class TimeStampedRequest(val job: Job, val timeStamp: TimeStamp)
54+
private class TimeStampedJob(val actualJob: Job, val timeStamp: TimeStamp) {
55+
fun stampBy(virtualFile: VirtualFile) = ModStampedRequest(virtualFile.modificationStamp, this)
56+
}
5557

5658
private class ModStampedRequest(
5759
val modificationStamp: Long,
58-
val request: TimeStampedRequest? = null
59-
)
60+
val job: TimeStampedJob? = null
61+
) {
62+
fun cancel() = job?.actualJob?.cancel()
63+
}
6064

6165
fun getCurrentDependencies(file: VirtualFile): ScriptDependencies {
6266
cache[file]?.let { return it }
@@ -108,14 +112,9 @@ internal class ScriptDependenciesUpdater(
108112
return
109113
}
110114

111-
lastRequest?.request?.job?.cancel()
112-
113-
val (currentTimeStamp, newJob) = sendRequest(file, scriptDefinition)
115+
lastRequest?.cancel()
114116

115-
requests[path] = ModStampedRequest(
116-
file.modificationStamp,
117-
TimeStampedRequest(newJob, currentTimeStamp)
118-
)
117+
requests[path] = sendRequest(file, scriptDefinition).stampBy(file)
119118
return
120119
}
121120

@@ -127,13 +126,13 @@ internal class ScriptDependenciesUpdater(
127126
return true
128127
}
129128

130-
return previousRequest.request == null
129+
return previousRequest.job == null
131130
}
132131

133132
private fun sendRequest(
134133
file: VirtualFile,
135134
scriptDef: KotlinScriptDefinition
136-
): Pair<TimeStamp, Job> {
135+
): TimeStampedJob {
137136
val currentTimeStamp = TimeStamps.next()
138137
val dependenciesResolver = scriptDef.dependencyResolver as AsyncDependenciesResolver
139138
val path = file.path
@@ -143,7 +142,7 @@ internal class ScriptDependenciesUpdater(
143142
contentLoader.getScriptContents(scriptDef, file),
144143
contentLoader.getEnvironment(scriptDef)
145144
)
146-
val lastTimeStamp = requests[path]?.request?.timeStamp
145+
val lastTimeStamp = requests[path]?.job?.timeStamp
147146
val isLastSentRequest = lastTimeStamp == null || lastTimeStamp == currentTimeStamp
148147
if (isLastSentRequest) {
149148
ServiceManager.getService(project, ScriptReportSink::class.java)?.attachReports(file, result.reports)
@@ -152,7 +151,7 @@ internal class ScriptDependenciesUpdater(
152151
}
153152
}
154153
}
155-
return Pair(currentTimeStamp, newJob)
154+
return TimeStampedJob(newJob, currentTimeStamp)
156155
}
157156

158157
fun updateSync(file: VirtualFile, scriptDef: KotlinScriptDefinition): Boolean {

0 commit comments

Comments
 (0)