[kotlin] Deprecate org.jetbrains.kotlin.idea.core.util.EDT

#KTIJ-30910

GitOrigin-RevId: 177f438ea07fd6cf1d06c22dc2309a885d6cb4ab
This commit is contained in:
Vladimir Dolzhenko
2024-08-08 16:44:21 +00:00
committed by intellij-monorepo-bot
parent afc0a97ac9
commit 8b3ee81536
7 changed files with 33 additions and 27 deletions
@@ -9,10 +9,11 @@ import com.intellij.openapi.application.ReadAction
import com.intellij.openapi.components.Service
import com.intellij.openapi.components.service
import com.intellij.openapi.project.Project
import kotlinx.coroutines.CoroutineScope
import org.jetbrains.annotations.ApiStatus
@Service(Service.Level.PROJECT)
class KotlinPluginDisposable : Disposable {
class KotlinPluginDisposable(val coroutineScope: CoroutineScope) : Disposable {
@Volatile
var disposed: Boolean = false
@@ -15,6 +15,7 @@ import org.jetbrains.kotlin.idea.util.application.isDispatchThread
import kotlin.coroutines.AbstractCoroutineContextElement
import kotlin.coroutines.CoroutineContext
@Deprecated("Use Dispatchers.EDT instead", replaceWith = ReplaceWith("Dispatchers.EDT"))
object EDT : CoroutineDispatcher() {
override fun isDispatchNeeded(context: CoroutineContext): Boolean = !isDispatchThread()
@@ -2,16 +2,17 @@
package org.jetbrains.kotlin.idea.gradleJava.scripting.legacy
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.writeAction
import com.intellij.openapi.fileEditor.FileDocumentManager
import com.intellij.openapi.project.Project
import com.intellij.openapi.vfs.VirtualFile
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.jetbrains.kotlin.idea.core.script.configuration.cache.CachedConfigurationInputs
import org.jetbrains.kotlin.idea.core.script.configuration.loader.DefaultScriptConfigurationLoader
import org.jetbrains.kotlin.idea.core.script.configuration.loader.ScriptConfigurationLoadingContext
import org.jetbrains.kotlin.idea.core.util.EDT
import org.jetbrains.kotlin.idea.gradleJava.scripting.getGradleScriptInputsStamp
import org.jetbrains.kotlin.idea.gradleJava.scripting.isGradleKotlinScript
import org.jetbrains.kotlin.idea.gradleJava.scripting.roots.GradleBuildRootsManager
@@ -23,7 +24,7 @@ import org.jetbrains.kotlin.scripting.definitions.ScriptDefinition
*
* TODO(gradle6): remove
*/
class GradleLegacyScriptConfigurationLoader(project: Project) : DefaultScriptConfigurationLoader(project) {
class GradleLegacyScriptConfigurationLoader(project: Project, private val coroutineScope: CoroutineScope) : DefaultScriptConfigurationLoader(project) {
private val buildRootsManager
get() = GradleBuildRootsManager.getInstanceSafe(project)
@@ -64,8 +65,8 @@ class GradleLegacyScriptConfigurationLoader(project: Project) : DefaultScriptCon
}
// Gradle read files from FS, so let's save all docs
GlobalScope.launch(EDT(project)) {
runWriteAction {
coroutineScope.launch(Dispatchers.EDT) {
writeAction {
FileDocumentManager.getInstance().saveAllDocuments()
}
}
@@ -3,6 +3,7 @@
package org.jetbrains.kotlin.idea.gradleJava.scripting.roots
import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.diagnostic.ControlFlowException
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
@@ -14,7 +15,8 @@ import com.intellij.openapi.vfs.VfsUtil
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.psi.PsiManager
import com.intellij.ui.EditorNotifications
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.jetbrains.kotlin.idea.base.plugin.KotlinPluginModeProvider
import org.jetbrains.kotlin.idea.caches.trackers.KotlinCodeBlockModificationListener
@@ -27,7 +29,6 @@ import org.jetbrains.kotlin.idea.core.script.scriptingDebugLog
import org.jetbrains.kotlin.idea.core.script.scriptingErrorLog
import org.jetbrains.kotlin.idea.core.script.scriptingInfoLog
import org.jetbrains.kotlin.idea.core.script.ucache.ScriptClassRootsBuilder
import org.jetbrains.kotlin.idea.core.util.EDT
import org.jetbrains.kotlin.idea.gradle.scripting.LastModifiedFiles
import org.jetbrains.kotlin.idea.gradleJava.scripting.getGradleVersion
import org.jetbrains.kotlin.idea.gradleJava.scripting.importing.KotlinDslGradleBuildSync
@@ -66,7 +67,7 @@ import java.util.concurrent.atomic.AtomicBoolean
* - [New] - not yet imported
* - [Imported] - imported
*/
class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(project), ScriptingSupport {
class GradleBuildRootsManager(val project: Project, private val coroutineScope: CoroutineScope) : GradleBuildRootsLocator(project), ScriptingSupport {
private val manager: CompositeScriptConfigurationManager
get() = ScriptConfigurationManager.getInstance(project) as CompositeScriptConfigurationManager
@@ -393,7 +394,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(pr
if (openedScripts.isEmpty()) return
GlobalScope.launch(EDT(project)) {
coroutineScope.launch(Dispatchers.EDT) {
if (project.isDisposed) return@launch
openedScripts.forEach {
@@ -8,6 +8,7 @@ import com.intellij.codeInsight.navigation.openFileWithPsiElement
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.editor.EditorFactory
@@ -30,8 +31,8 @@ import org.jetbrains.kotlin.idea.base.projectStructure.moduleInfoOrNull
import org.jetbrains.kotlin.idea.base.psi.getLineCount
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.completion.CompletionBenchmarkSink
import org.jetbrains.kotlin.idea.core.KotlinPluginDisposable
import org.jetbrains.kotlin.idea.core.moveCaret
import org.jetbrains.kotlin.idea.core.util.EDT
import org.jetbrains.kotlin.idea.core.util.toPsiFile
import org.jetbrains.kotlin.idea.util.application.isApplicationInternalMode
import org.jetbrains.kotlin.psi.KtFile
@@ -46,7 +47,7 @@ abstract class AbstractCompletionBenchmarkAction : AnAction() {
val benchmarkSink = CompletionBenchmarkSink.enableAndGet()
val scenario = createBenchmarkScenario(project, benchmarkSink) ?: return
GlobalScope.launch(EDT) {
KotlinPluginDisposable.getInstance(project).coroutineScope.launch(Dispatchers.EDT) {
scenario.doBenchmark()
CompletionBenchmarkSink.disable()
}
@@ -11,6 +11,7 @@ import com.intellij.openapi.actionSystem.ActionManager
import com.intellij.openapi.actionSystem.ActionUpdateThread
import com.intellij.openapi.actionSystem.AnAction
import com.intellij.openapi.actionSystem.AnActionEvent
import com.intellij.openapi.application.EDT
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.editor.impl.DocumentMarkupModel
import com.intellij.openapi.project.Project
@@ -19,7 +20,7 @@ import com.intellij.psi.PsiDocumentManager
import com.intellij.ui.components.JBPanel
import com.intellij.ui.components.JBTextField
import com.intellij.uiDesigner.core.GridLayoutManager
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.channels.Channel
import kotlinx.coroutines.channels.onClosed
import kotlinx.coroutines.delay
@@ -29,7 +30,7 @@ import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBe
import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBenchmarkAction.Companion.shuffledSequence
import org.jetbrains.kotlin.idea.base.psi.getLineCount
import org.jetbrains.kotlin.idea.base.resources.KotlinBundle
import org.jetbrains.kotlin.idea.core.util.EDT
import org.jetbrains.kotlin.idea.core.KotlinPluginDisposable
import org.jetbrains.kotlin.idea.util.application.isApplicationInternalMode
import org.jetbrains.kotlin.psi.KtFile
import java.util.*
@@ -70,7 +71,7 @@ class HighlightingBenchmarkAction : AnAction() {
val finishListener = DaemonFinishListener()
connection.subscribe(DaemonCodeAnalyzer.DAEMON_EVENT_TOPIC, finishListener)
GlobalScope.launch(EDT) {
KotlinPluginDisposable.getInstance(project).coroutineScope.launch(Dispatchers.EDT) {
try {
delay(100)
ktFiles
@@ -3,9 +3,10 @@
package org.jetbrains.kotlin.j2k
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.ModalityState
import com.intellij.openapi.application.runReadAction
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.readAction
import com.intellij.openapi.application.runWriteAction
import com.intellij.openapi.application.writeAction
import com.intellij.openapi.diagnostic.ControlFlowException
import com.intellij.openapi.editor.RangeMarker
import com.intellij.openapi.editor.asTextRange
@@ -14,12 +15,11 @@ import com.intellij.openapi.util.TextRange
import com.intellij.psi.PsiElement
import com.intellij.psi.PsiRecursiveElementVisitor
import com.intellij.psi.codeStyle.CodeStyleManager
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade
import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference
import org.jetbrains.kotlin.idea.core.KotlinPluginDisposable
import org.jetbrains.kotlin.idea.core.util.EDT
import org.jetbrains.kotlin.idea.util.ImportInsertHelper
import org.jetbrains.kotlin.j2k.PostProcessingTarget.MultipleFilesPostProcessingTarget
import org.jetbrains.kotlin.j2k.PostProcessingTarget.PieceOfCodePostProcessingTarget
@@ -59,14 +59,14 @@ class OldJ2kPostProcessor(private val formatCode: Boolean = true) : PostProcesso
val disposable = KotlinPluginDisposable.getInstance(file.project)
runBlocking(EDT.ModalityStateElement(ModalityState.defaultModalityState())) {
disposable.coroutineScope.launch(Dispatchers.EDT) {
do {
var modificationStamp: Long? = file.modificationStamp
val elementToActions: List<ActionData> = run {
@Suppress("DEPRECATION")
while (!Disposer.isDisposed(disposable)) {
try {
return@run runReadAction {
return@run readAction {
collectAvailableActions(file, rangeMarker)
}
} catch (e: Exception) {
@@ -77,11 +77,11 @@ class OldJ2kPostProcessor(private val formatCode: Boolean = true) : PostProcesso
emptyList()
}
withContext(EDT) {
launch(Dispatchers.EDT) {
for ((element, action, _, writeActionNeeded) in elementToActions) {
if (element.isValid) {
if (writeActionNeeded) {
runWriteAction {
writeAction {
action()
}
} else {
@@ -98,8 +98,8 @@ class OldJ2kPostProcessor(private val formatCode: Boolean = true) : PostProcesso
if (formatCode) {
withContext(EDT) {
runWriteAction {
launch(Dispatchers.EDT) {
writeAction {
val codeStyleManager = CodeStyleManager.getInstance(file.project)
if (rangeMarker != null) {
if (rangeMarker.isValid) {