diff --git a/build.gradle.kts b/build.gradle.kts index 19880a71a04..66e2a3675cb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -144,8 +144,8 @@ extra["versions.junit"] = "4.12" extra["versions.javaslang"] = "2.0.6" extra["versions.ant"] = "1.8.2" extra["versions.android"] = "2.3.1" -extra["versions.kotlinx-coroutines-core"] = "0.26.1-eap13" -extra["versions.kotlinx-coroutines-jdk8"] = "0.26.1-eap13" +extra["versions.kotlinx-coroutines-core"] = "1.0.1" +extra["versions.kotlinx-coroutines-jdk8"] = "1.0.1" extra["versions.json"] = "20160807" extra["versions.native-platform"] = "0.14" extra["versions.ant-launcher"] = "1.8.0" diff --git a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBenchmarkSink.kt b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBenchmarkSink.kt index 9d30b24b058..5f0503bea3c 100644 --- a/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBenchmarkSink.kt +++ b/idea/idea-completion/src/org/jetbrains/kotlin/idea/completion/CompletionBenchmarkSink.kt @@ -16,7 +16,8 @@ package org.jetbrains.kotlin.idea.completion -import kotlinx.coroutines.channels.ConflatedChannel +import kotlinx.coroutines.channels.Channel +import kotlinx.coroutines.channels.Channel.Factory.CONFLATED import java.lang.System.currentTimeMillis @@ -48,7 +49,7 @@ interface CompletionBenchmarkSink { class Impl : CompletionBenchmarkSink { private val pendingSessions = mutableListOf() - val channel = ConflatedChannel() + val channel = Channel(capacity = CONFLATED) private val perSessionResults = LinkedHashMap() private var start: Long = 0 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 c5dbd489d12..a562fc60068 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 @@ -24,6 +24,7 @@ import com.intellij.psi.PsiElementFinder import com.intellij.psi.PsiManager import com.intellij.psi.search.NonClasspathDirectoriesScope import com.intellij.util.containers.SLRUMap +import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.jetbrains.kotlin.idea.core.util.EDT import org.jetbrains.kotlin.utils.addIfNotNull @@ -80,7 +81,7 @@ class ScriptDependenciesCache(private val project: Project) { private fun updateHighlighting(files: List) { ScriptDependenciesModificationTracker.getInstance(project).incModificationCount() - launch(EDT(project)) { + GlobalScope.launch(EDT(project)) { files.filter { it.isValid }.forEach { 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/dependencies/AsyncScriptDependenciesLoader.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt index 7e9c83786b7..50bd136dfca 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/dependencies/AsyncScriptDependenciesLoader.kt @@ -79,7 +79,7 @@ class AsyncScriptDependenciesLoader( dispatcher: CoroutineDispatcher, currentTimeStamp: TimeStamp, doResolve: suspend () -> DependenciesResolver.ResolveResult - ): Job = launch(dispatcher + project.cancelOnDisposal) { + ): Job = GlobalScope.launch(dispatcher + project.cancelOnDisposal) { val result = try { doResolve() } catch (t: Throwable) { diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CoroutineUtils.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CoroutineUtils.kt index bccbcb1f2cf..72e500da927 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CoroutineUtils.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/CoroutineUtils.kt @@ -24,6 +24,7 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Disposer import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Job +import kotlinx.coroutines.Runnable import kotlin.coroutines.AbstractCoroutineContextElement import kotlin.coroutines.CoroutineContext diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt index 22a1118b364..6e9b5222bda 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/AbstractCompletionBenchmarkAction.kt @@ -36,10 +36,7 @@ import com.intellij.psi.search.GlobalSearchScope import com.intellij.ui.components.JBLabel import com.intellij.ui.components.JBTextField import com.intellij.uiDesigner.core.GridConstraints -import kotlinx.coroutines.CancellationException -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch -import kotlinx.coroutines.withTimeout +import kotlinx.coroutines.* import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.caches.project.ModuleOrigin import org.jetbrains.kotlin.idea.caches.project.getNullableModuleInfo @@ -61,7 +58,7 @@ abstract class AbstractCompletionBenchmarkAction : AnAction() { val benchmarkSink = CompletionBenchmarkSink.enableAndGet() val scenario = createBenchmarkScenario(project, benchmarkSink) ?: return - launch(EDT) { + GlobalScope.launch(EDT) { scenario.doBenchmark() CompletionBenchmarkSink.disable() } diff --git a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt index 437a46c265e..7803a201e0d 100644 --- a/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt +++ b/idea/src/org/jetbrains/kotlin/idea/actions/internal/benchmark/HighlightingBenchmarkAction.kt @@ -32,7 +32,8 @@ 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.channels.ConflatedChannel +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.jetbrains.kotlin.idea.actions.internal.benchmark.AbstractCompletionBenchmarkAction.Companion.addBoxWithLabel @@ -76,7 +77,7 @@ class HighlightingBenchmarkAction : AnAction() { val finishListener = DaemonFinishListener() connection.subscribe(DaemonCodeAnalyzer.DAEMON_EVENT_TOPIC, finishListener) - launch(EDT) { + GlobalScope.launch(EDT) { try { delay(100) ktFiles @@ -98,7 +99,7 @@ class HighlightingBenchmarkAction : AnAction() { private data class Settings(val seed: Long, val files: Int, val lines: Int) private inner class DaemonFinishListener : DaemonCodeAnalyzer.DaemonListener { - val channel = ConflatedChannel() + val channel = Channel(capacity = Channel.CONFLATED) override fun daemonFinished() { channel.offer(SUCCESS) diff --git a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt index 17f7dbf69ce..2ade5ea82a0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/j2k/J2kPostProcessor.kt @@ -23,8 +23,8 @@ 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.run import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withContext import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.caches.resolve.resolveImportReference import org.jetbrains.kotlin.idea.conversion.copy.range @@ -64,7 +64,7 @@ class J2kPostProcessor(private val formatCode: Boolean) : PostProcessor { collectAvailableActions(file, rangeMarker) } - run(EDT) { + withContext(EDT) { for ((element, action, _, writeActionNeeded) in elementToActions) { if (element.isValid) { if (writeActionNeeded) { @@ -88,7 +88,7 @@ class J2kPostProcessor(private val formatCode: Boolean) : PostProcessor { if (formatCode) { - run(EDT) { + withContext(EDT) { runWriteAction { val codeStyleManager = CodeStyleManager.getInstance(file.project) if (rangeMarker != null) {