ScriptDependenciesLoader: Fix calling notifyRootsChanged in write-unsafe context (EA-123239)
This commit is contained in:
+3
-13
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.idea.core.script.dependencies
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.TransactionGuard
|
||||
import com.intellij.openapi.components.ServiceManager
|
||||
import com.intellij.openapi.progress.ProgressIndicator
|
||||
import com.intellij.openapi.progress.Task
|
||||
@@ -13,9 +14,7 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.roots.ex.ProjectRootManagerEx
|
||||
import com.intellij.openapi.util.EmptyRunnable
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import kotlinx.coroutines.experimental.launch
|
||||
import org.jetbrains.kotlin.idea.core.script.*
|
||||
import org.jetbrains.kotlin.idea.core.util.EDT
|
||||
import org.jetbrains.kotlin.idea.util.application.runWriteAction
|
||||
import org.jetbrains.kotlin.script.*
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
@@ -110,22 +109,13 @@ abstract class ScriptDependenciesLoader(
|
||||
protected fun notifyRootsChanged() {
|
||||
if (!shouldNotifyRootsChanged) return
|
||||
|
||||
val rootsChangesRunnable = {
|
||||
TransactionGuard.submitTransaction(project, Runnable {
|
||||
runWriteAction {
|
||||
if (project.isDisposed) return@runWriteAction
|
||||
|
||||
ProjectRootManagerEx.getInstanceEx(project)?.makeRootsChange(EmptyRunnable.getInstance(), false, true)
|
||||
ScriptDependenciesModificationTracker.getInstance(project).incModificationCount()
|
||||
}
|
||||
}
|
||||
|
||||
val application = ApplicationManager.getApplication()
|
||||
if (application.isUnitTestMode) {
|
||||
rootsChangesRunnable()
|
||||
} else {
|
||||
launch(EDT(project)) {
|
||||
rootsChangesRunnable()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user