diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesCache.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesCache.kt index af2c255717c..c994f391107 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesCache.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesCache.kt @@ -72,7 +72,7 @@ internal class ScriptDependenciesCache(private val project: Project) { private fun updateHighlighting(file: VirtualFile?) { ScriptDependenciesModificationTracker.getInstance(project).incModificationCount() - launch(EDT) { + launch(EDT(project)) { if (file != null) { file.let { PsiManager.getInstance(project).findFile(it) }?.let { psiFile -> DaemonCodeAnalyzer.getInstance(project).restart(psiFile) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt index 8e313759161..583cc0a72c2 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/ScriptDependenciesUpdater.kt @@ -35,6 +35,8 @@ import kotlinx.coroutines.experimental.Job import kotlinx.coroutines.experimental.asCoroutineDispatcher import kotlinx.coroutines.experimental.launch import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.idea.core.util.EDT +import org.jetbrains.kotlin.idea.core.util.cancelOnDisposal import org.jetbrains.kotlin.idea.util.application.runWriteAction import org.jetbrains.kotlin.psi.NotNullableUserDataProperty import org.jetbrains.kotlin.script.* @@ -166,7 +168,7 @@ internal class ScriptDependenciesUpdater( currentTimeStamp: TimeStamp, scriptDef: KotlinScriptDefinition, doResolve: suspend () -> DependenciesResolver.ResolveResult - ) = launch(dispatcher) { + ) = launch(dispatcher + project.cancelOnDisposal) { val result = try { doResolve() } @@ -231,7 +233,9 @@ internal class ScriptDependenciesUpdater( rootsChangesRunnable.invoke() } else { - application.invokeLater(rootsChangesRunnable, ModalityState.defaultModalityState()) + launch(EDT(project)) { + rootsChangesRunnable() + } } }