diff --git a/platform/configuration-store-impl/src/SaveSessionProducerManager.kt b/platform/configuration-store-impl/src/SaveSessionProducerManager.kt index 9d134fa74013..a440a63e2031 100644 --- a/platform/configuration-store-impl/src/SaveSessionProducerManager.kt +++ b/platform/configuration-store-impl/src/SaveSessionProducerManager.kt @@ -2,7 +2,7 @@ package com.intellij.configurationStore import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.StateStorage import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.progress.blockingContext @@ -46,7 +46,7 @@ internal open class SaveSessionProducerManager(private val isUseVfsForWrite: Boo protected suspend fun saveSessions(saveSessions: Collection, saveResult: SaveResult) { if (isUseVfsForWrite) { - writeAction { + edtWriteAction { for (saveSession in saveSessions) { saveSessionBlocking(saveSession, saveResult) } diff --git a/platform/configuration-store-impl/testSrc/TwoSimultaneousProjectsTest.kt b/platform/configuration-store-impl/testSrc/TwoSimultaneousProjectsTest.kt index ff2127967797..faaf56dd74c2 100644 --- a/platform/configuration-store-impl/testSrc/TwoSimultaneousProjectsTest.kt +++ b/platform/configuration-store-impl/testSrc/TwoSimultaneousProjectsTest.kt @@ -2,7 +2,7 @@ package com.intellij.configurationStore import com.intellij.ide.highlighter.ModuleFileType -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.StoragePathMacros import com.intellij.openapi.components.impl.stores.stateStore import com.intellij.openapi.module.Module @@ -41,13 +41,13 @@ class TwoSimultaneousProjectsTest { testFixture(name) { val project = this@persistentModuleFixture.init() val manager = ModuleManager.getInstance(project) - val module = writeAction { + val module = edtWriteAction { val projectDir = project.guessProjectDir()?.toNioPath() ?: throw RuntimeException("Cannot guess project dir for $project") assumeThat(projectDir).isNotNull().exists() manager.newModule(projectDir.resolve("$name${ModuleFileType.DOT_DEFAULT_EXTENSION}"), "") } initialized(module) { - writeAction { + edtWriteAction { manager.disposeModule(module) } } @@ -61,7 +61,7 @@ class TwoSimultaneousProjectsTest { val originalModuleAFile = checkModuleAndGetFile(moduleA) val originalModuleBFile = checkModuleAndGetFile(moduleB) val newName = "$SHARED_NAME.v2" - writeAction { + edtWriteAction { LocalFileSystem.getInstance().refreshAndFindFileByNioFile(originalModuleAFile)!!.rename(null, "${newName}${ModuleFileType.DOT_DEFAULT_EXTENSION}") } assertModuleFileRenamed(moduleA, newName, originalModuleAFile) diff --git a/platform/execution-impl/src/com/intellij/execution/impl/RCInArbitraryFileManager.kt b/platform/execution-impl/src/com/intellij/execution/impl/RCInArbitraryFileManager.kt index 6adba062502b..327c39f76a4b 100644 --- a/platform/execution-impl/src/com/intellij/execution/impl/RCInArbitraryFileManager.kt +++ b/platform/execution-impl/src/com/intellij/execution/impl/RCInArbitraryFileManager.kt @@ -7,7 +7,7 @@ import com.dynatrace.hash4j.hashing.Hashing import com.intellij.openapi.application.ModalityState import com.intellij.openapi.application.invokeLater import com.intellij.openapi.application.runWriteAction -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.diagnostic.logger @@ -287,14 +287,14 @@ internal class RCInArbitraryFileManager(private val project: Project) { } private suspend fun saveToFile(filePath: String, data: BufferExposingByteArrayOutputStream) { - writeAction { + edtWriteAction { var file = LocalFileSystem.getInstance().findFileByPath(filePath) if (file == null) { val parentPath = PathUtil.getParentPath(filePath) val dir = VfsUtil.createDirectoryIfMissing(parentPath) if (dir == null) { LOG.error("Failed to create directory $parentPath") - return@writeAction + return@edtWriteAction } file = dir.createChildData(this@RCInArbitraryFileManager, PathUtil.getFileName(filePath)) diff --git a/platform/lang-impl/src/com/intellij/util/indexing/UnindexedFilesScannerExecutorImpl.kt b/platform/lang-impl/src/com/intellij/util/indexing/UnindexedFilesScannerExecutorImpl.kt index e59b2c16ea12..f7d4c4c4522b 100644 --- a/platform/lang-impl/src/com/intellij/util/indexing/UnindexedFilesScannerExecutorImpl.kt +++ b/platform/lang-impl/src/com/intellij/util/indexing/UnindexedFilesScannerExecutorImpl.kt @@ -3,7 +3,7 @@ package com.intellij.util.indexing import com.google.common.util.concurrent.SettableFuture import com.intellij.openapi.Disposable -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.service import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.diagnostic.Logger @@ -93,7 +93,7 @@ class UnindexedFilesScannerExecutorImpl(private val project: Project, cs: Corout while (true) { isRunning.combine(nextTaskExecutionAllowed) { running, allowed -> !running && allowed }.first { it } // write action is needed, because otherwise we may get "Constraint inSmartMode cannot be satisfied" in NBRA - writeAction { + edtWriteAction { // we should only set the flag here (if needed), not clear it, // otherwise, isRunning may become false in the middle of scanning task execution isRunning.value = isRunning.value || scanningTask.value != null diff --git a/platform/lang-impl/testSources/com/intellij/util/indexing/UnindexedFilesScannerTest.kt b/platform/lang-impl/testSources/com/intellij/util/indexing/UnindexedFilesScannerTest.kt index c5638687624e..16d32144225b 100644 --- a/platform/lang-impl/testSources/com/intellij/util/indexing/UnindexedFilesScannerTest.kt +++ b/platform/lang-impl/testSources/com/intellij/util/indexing/UnindexedFilesScannerTest.kt @@ -5,7 +5,7 @@ import com.google.common.util.concurrent.SettableFuture import com.intellij.ide.plugins.PluginManagerCore import com.intellij.openapi.application.ReadWriteActionSupport import com.intellij.openapi.application.readAction -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.service import com.intellij.openapi.fileTypes.ExtensionFileNameMatcher import com.intellij.openapi.fileTypes.FileType @@ -137,7 +137,7 @@ class UnindexedFilesScannerTest { val latch = CountDownLatch(1) async { - writeAction { + edtWriteAction { latch.await() } } diff --git a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.kt b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.kt index 9484b41812db..a40f24b32ed2 100644 --- a/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.kt +++ b/platform/platform-impl/src/com/intellij/ide/impl/ProjectUtil.kt @@ -648,7 +648,7 @@ object ProjectUtil { runInAutoSaveDisabledMode { saveSettings(componentManager = project, forceSavingAllSettings = true) } - writeAction { + edtWriteAction { Disposer.dispose(project) } projectFile = file diff --git a/platform/platform-tests/testSrc/com/intellij/ide/impl/TrustedProjectsHeavyTestCase.kt b/platform/platform-tests/testSrc/com/intellij/ide/impl/TrustedProjectsHeavyTestCase.kt index e3f9c6a3c269..67141ed136ce 100644 --- a/platform/platform-tests/testSrc/com/intellij/ide/impl/TrustedProjectsHeavyTestCase.kt +++ b/platform/platform-tests/testSrc/com/intellij/ide/impl/TrustedProjectsHeavyTestCase.kt @@ -3,7 +3,7 @@ package com.intellij.ide.impl import com.intellij.ide.trustedProjects.TrustedProjectsLocator import com.intellij.openapi.Disposable -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.project.Project import com.intellij.openapi.project.ex.ProjectManagerEx import com.intellij.openapi.util.io.getResolvedPath @@ -57,7 +57,7 @@ abstract class TrustedProjectsHeavyTestCase { suspend fun createProjectAsync( relativeProjectRoot: String ): Project { - val projectRoot = writeAction { + val projectRoot = edtWriteAction { testRoot.createDirectory(relativeProjectRoot) } val projectManager = ProjectManagerEx.getInstanceEx() @@ -75,7 +75,7 @@ abstract class TrustedProjectsHeavyTestCase { moduleName: String, vararg relativeContentRoots: String ) { - writeAction { + edtWriteAction { val entityStorage = MutableEntityStorage.create() val contentRoots = relativeContentRoots.map { testRoot.findOrCreateDirectory(it) @@ -93,7 +93,7 @@ abstract class TrustedProjectsHeavyTestCase { numContentRoots: Int ): Project { val projectName = project.name - writeAction { + edtWriteAction { val entityStorage = MutableEntityStorage.create() generateModuleAsync(project, entityStorage, "project", numContentRoots) repeat(numModules - 1) { index -> diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ReadWritePropagationTest.kt b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ReadWritePropagationTest.kt index 02eb80a2f4f4..686f0498c023 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ReadWritePropagationTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/ReadWritePropagationTest.kt @@ -56,7 +56,7 @@ class ReadWritePropagationTest { @RepeatedTest(REPETITIONS) fun `write action is inherited by structured concurrency`() { - checkInheritanceViaStructureConcurrency(::writeAction, { ApplicationManager.getApplication().isWriteAccessAllowed }) + checkInheritanceViaStructureConcurrency(::edtWriteAction, { ApplicationManager.getApplication().isWriteAccessAllowed }) } private fun checkInheritanceViaNewContext(wrapper: suspend (() -> Unit) -> Unit, checker: () -> Boolean, innerChecker: () -> Boolean = checker): Unit = timeoutRunBlocking { @@ -120,7 +120,7 @@ class ReadWritePropagationTest { @RepeatedTest(REPETITIONS) fun `write action is not inherited by non-structured concurrency`() { - checkNoInheritanceViaNonStructuredConcurrency(::writeAction, { ApplicationManager.getApplication().isWriteAccessAllowed }) + checkNoInheritanceViaNonStructuredConcurrency(::edtWriteAction, { ApplicationManager.getApplication().isWriteAccessAllowed }) } @RepeatedTest(REPETITIONS) diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/SuspendingWriteActionTest.kt b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/SuspendingWriteActionTest.kt index 42ad9d49a16f..a55712903b68 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/SuspendingWriteActionTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/openapi/application/impl/SuspendingWriteActionTest.kt @@ -2,7 +2,7 @@ package com.intellij.openapi.application.impl import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.progress.* import com.intellij.testFramework.common.timeoutRunBlocking import com.intellij.testFramework.junit5.TestApplication @@ -48,7 +48,7 @@ class SuspendingWriteActionTest { assertEmptyContext(rootJob) - val result = writeAction { + val result = edtWriteAction { assertWriteActionWithCurrentJob() runBlockingCancellable { val writeJob = coroutineContext.job @@ -71,7 +71,7 @@ class SuspendingWriteActionTest { fun cancellation(): Unit = timeoutRunBlocking { launch { assertThrows { - writeAction { + edtWriteAction { testNoExceptions() this.coroutineContext.job.cancel() testExceptions() @@ -83,7 +83,7 @@ class SuspendingWriteActionTest { @RepeatedTest(repetitions) fun rethrow(): Unit = timeoutRunBlocking { testRwRethrow { - writeAction(it) + edtWriteAction(it) } } @@ -91,7 +91,7 @@ class SuspendingWriteActionTest { @Test fun `current job`(): Unit = timeoutRunBlocking { val coroutineJob = coroutineContext.job - writeAction { + edtWriteAction { Assertions.assertSame(coroutineJob, Cancellation.currentJob()?.parent?.parent) } } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunBlockingCancellableTest.kt b/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunBlockingCancellableTest.kt index 3e2cdf08d8a8..bc4d222a5b35 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunBlockingCancellableTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunBlockingCancellableTest.kt @@ -4,7 +4,7 @@ package com.intellij.openapi.progress import com.intellij.concurrency.currentThreadOverriddenContextOrNull import com.intellij.openapi.application.ReadAction import com.intellij.openapi.application.impl.ModalityStateEx -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.testFramework.assertErrorLogged import com.intellij.testFramework.common.timeoutRunBlocking import com.intellij.testFramework.junit5.RegistryKey @@ -274,7 +274,7 @@ class RunBlockingCancellableTest : CancellationTest() { @Test @RegistryKey("ide.run.blocking.cancellable.assert.in.tests", "true") fun `runBlockingCancellable is not allowed in wa`(): Unit = timeoutRunBlocking { - writeAction { + edtWriteAction { assertErrorLogged { runBlockingCancellable { } diff --git a/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunWithModalProgressBlockingTest.kt b/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunWithModalProgressBlockingTest.kt index 0bc174eb2f01..b8e793b9b6b5 100644 --- a/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunWithModalProgressBlockingTest.kt +++ b/platform/platform-tests/testSrc/com/intellij/openapi/progress/RunWithModalProgressBlockingTest.kt @@ -349,7 +349,7 @@ class RunWithModalProgressBlockingTest : ModalCoroutineTest() { runWithModalProgressBlocking { val job = Job() launch(Dispatchers.EDT) { - writeAction { + edtWriteAction { try { inWriteAction.set(true) job.complete() @@ -461,7 +461,7 @@ class RunWithModalProgressBlockingTest : ModalCoroutineTest() { launch(Dispatchers.EDT) { writeCoroutineStarted.complete() writeActionCanStart.join() - writeAction { + edtWriteAction { inWaCounter.set(true) } } diff --git a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt index c3a05d80fb3d..c45ae565162e 100644 --- a/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt +++ b/platform/projectModel-impl/src/com/intellij/workspaceModel/ide/impl/WorkspaceModelImpl.kt @@ -2,7 +2,7 @@ package com.intellij.workspaceModel.ide.impl import com.intellij.diagnostic.StartUpMeasurer -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.serviceIfCreated import com.intellij.openapi.diagnostic.ControlFlowException import com.intellij.openapi.diagnostic.debug @@ -209,7 +209,7 @@ open class WorkspaceModelImpl(private val project: Project, private val cs: Coro override suspend fun update(description: String, updater: (MutableEntityStorage) -> Unit) { // TODO:: Has to be migrated to the implementation without WA. See IDEA-336937 - writeAction { updateProjectModel(description, updater) } + edtWriteAction { updateProjectModel(description, updater) } } /** diff --git a/platform/util/testSrc/com/intellij/openapi/vfs/VirtualFileUtilTest.kt b/platform/util/testSrc/com/intellij/openapi/vfs/VirtualFileUtilTest.kt index 97147cdcb277..8aaa2d200752 100644 --- a/platform/util/testSrc/com/intellij/openapi/vfs/VirtualFileUtilTest.kt +++ b/platform/util/testSrc/com/intellij/openapi/vfs/VirtualFileUtilTest.kt @@ -2,7 +2,7 @@ package com.intellij.openapi.vfs import com.intellij.openapi.application.readAction -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.util.io.NioPathAssertion.Companion.assertNioPath import com.intellij.openapi.util.io.findOrCreateDirectory import com.intellij.openapi.util.io.findOrCreateFile @@ -18,16 +18,16 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { @Test fun `test directory find or create`() { runBlocking { - assertVirtualFile { writeAction { root.findOrCreateDirectory("directory") } } - .isEqualsTo { writeAction { root.findOrCreateDirectory("directory") } } - .isEqualsTo { writeAction { root.findOrCreateDirectory("temp/../directory") } } - .isEqualsTo { writeAction { root.findOrCreateDirectory("directory/temp/..") } } + assertVirtualFile { edtWriteAction { root.findOrCreateDirectory("directory") } } + .isEqualsTo { edtWriteAction { root.findOrCreateDirectory("directory") } } + .isEqualsTo { edtWriteAction { root.findOrCreateDirectory("temp/../directory") } } + .isEqualsTo { edtWriteAction { root.findOrCreateDirectory("directory/temp/..") } } .isExistedDirectory() - assertVirtualFile { writeAction { root.findOrCreateDirectory("directory/dir") } } - .isEqualsTo { writeAction { root.findOrCreateDirectory("directory/dir") } } - .isEqualsTo { writeAction { root.findOrCreateDirectory("directory/temp/../dir") } } - .isEqualsTo { writeAction { root.findOrCreateDirectory("directory/dir/temp/..") } } + assertVirtualFile { edtWriteAction { root.findOrCreateDirectory("directory/dir") } } + .isEqualsTo { edtWriteAction { root.findOrCreateDirectory("directory/dir") } } + .isEqualsTo { edtWriteAction { root.findOrCreateDirectory("directory/temp/../dir") } } + .isEqualsTo { edtWriteAction { root.findOrCreateDirectory("directory/dir/temp/..") } } .isExistedDirectory() } } @@ -35,15 +35,15 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { @Test fun `test file find or create`() { runBlocking { - assertVirtualFile { writeAction { root.findOrCreateFile("file.txt") } } - .isEqualsTo { writeAction { root.findOrCreateFile("file.txt") } } - .isEqualsTo { writeAction { root.findOrCreateFile("temp/../file.txt") } } + assertVirtualFile { edtWriteAction { root.findOrCreateFile("file.txt") } } + .isEqualsTo { edtWriteAction { root.findOrCreateFile("file.txt") } } + .isEqualsTo { edtWriteAction { root.findOrCreateFile("temp/../file.txt") } } .isExistedFile() - assertVirtualFile { writeAction { root.findOrCreateFile("directory/file.txt") } } - .isEqualsTo { writeAction { root.findOrCreateFile("directory/file.txt") } } - .isEqualsTo { writeAction { root.findOrCreateFile("temp/../directory/file.txt") } } - .isEqualsTo { writeAction { root.findOrCreateFile("directory/temp/../file.txt") } } + assertVirtualFile { edtWriteAction { root.findOrCreateFile("directory/file.txt") } } + .isEqualsTo { edtWriteAction { root.findOrCreateFile("directory/file.txt") } } + .isEqualsTo { edtWriteAction { root.findOrCreateFile("temp/../directory/file.txt") } } + .isEqualsTo { edtWriteAction { root.findOrCreateFile("directory/temp/../file.txt") } } .isExistedFile() } } @@ -53,7 +53,7 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { runBlocking { assertVirtualFile { readAction { root.findDirectory("directory") } } .doesNotExist() - assertVirtualFile { writeAction { root.createDirectory("directory") } } + assertVirtualFile { edtWriteAction { root.createDirectory("directory") } } .isEqualsTo { readAction { root.findDirectory("directory") } } .isEqualsTo { readAction { root.findDirectory("directory/temp/..") } } .isExistedDirectory() @@ -62,14 +62,14 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { .doesNotExist() assertVirtualFile { readAction { root.findDirectory("directory/dir/temp") } } .doesNotExist() - assertVirtualFile { writeAction { root.createDirectory("directory/dir/temp/..") } } + assertVirtualFile { edtWriteAction { root.createDirectory("directory/dir/temp/..") } } .isEqualsTo { readAction { root.findDirectory("directory/dir") } } .isEqualsTo { readAction { root.findDirectory("directory/dir/temp/..") } } .isExistedDirectory() assertVirtualFile { readAction { root.findDirectory("directory/dir/temp") } } .doesNotExist() - assertVirtualFile { writeAction { root.createDirectory("d1/d2/d3/d4") } } + assertVirtualFile { edtWriteAction { root.createDirectory("d1/d2/d3/d4") } } .isExistedDirectory() } } @@ -79,7 +79,7 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { runBlocking { assertVirtualFile { readAction { root.findFile("file.txt") } } .doesNotExist() - assertVirtualFile { writeAction { root.createFile("file.txt") } } + assertVirtualFile { edtWriteAction { root.createFile("file.txt") } } .isEqualsTo { readAction { root.findFile("file.txt") } } .isEqualsTo { readAction { root.findFile("temp/../file.txt") } } .isExistedFile() @@ -88,14 +88,14 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { .doesNotExist() assertVirtualFile { readAction { root.findDirectory("directory/temp") } } .doesNotExist() - assertVirtualFile { writeAction { root.createFile("directory/temp/../file.txt") } } + assertVirtualFile { edtWriteAction { root.createFile("directory/temp/../file.txt") } } .isEqualsTo { readAction { root.findFile("directory/file.txt") } } .isEqualsTo { readAction { root.findFile("directory/temp/../file.txt") } } .isExistedFile() assertVirtualFile { readAction { root.findDirectory("directory/temp") } } .doesNotExist() - assertVirtualFile { writeAction { root.createFile("d1/d2/d3/d4/file.txt") } } + assertVirtualFile { edtWriteAction { root.createFile("d1/d2/d3/d4/file.txt") } } .isExistedFile() } } @@ -103,44 +103,44 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { @Test fun `test creation errors`() { runBlocking { - assertVirtualFile { writeAction { root.createFile("file.txt") } } + assertVirtualFile { edtWriteAction { root.createFile("file.txt") } } .isExistedFile() - assertVirtualFile { writeAction { root.createDirectory("directory") } } + assertVirtualFile { edtWriteAction { root.createDirectory("directory") } } .isExistedDirectory() - assertVirtualFile { writeAction { root.createFile("file.txt") } } + assertVirtualFile { edtWriteAction { root.createFile("file.txt") } } .isFailedWithException(""" |File already exists: .*/file.txt | basePath = .* | relativePath = file.txt """.trimMargin()) - assertVirtualFile { writeAction { root.createDirectory("directory") } } + assertVirtualFile { edtWriteAction { root.createDirectory("directory") } } .isFailedWithException(""" |Directory already exists: .*/directory | basePath = .* | relativePath = directory """.trimMargin()) - assertVirtualFile { writeAction { root.findOrCreateFile("directory") } } + assertVirtualFile { edtWriteAction { root.findOrCreateFile("directory") } } .isFailedWithException(""" |Expected file instead of directory: .*/directory | basePath = .* | relativePath = directory """.trimMargin()) - assertVirtualFile { writeAction { root.findOrCreateDirectory("file.txt") } } + assertVirtualFile { edtWriteAction { root.findOrCreateDirectory("file.txt") } } .isFailedWithException(""" |Expected directory instead of file: .*/file.txt | basePath = .* | relativePath = file.txt """.trimMargin()) - assertVirtualFile { writeAction { root.createFile("file.txt/file.txt") } } + assertVirtualFile { edtWriteAction { root.createFile("file.txt/file.txt") } } .isFailedWithException(""" |Expected directory instead of file: .*/file.txt | basePath = .* | relativePath = file.txt/file.txt """.trimMargin()) - assertVirtualFile { writeAction { root.createDirectory("file.txt/directory") } } + assertVirtualFile { edtWriteAction { root.createDirectory("file.txt/directory") } } .isFailedWithException(""" |Expected directory instead of file: .*/file.txt | basePath = .* @@ -177,23 +177,23 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { @Test fun `test delete`() { runBlocking { - writeAction { root.createFile("file.txt") } - writeAction { root.deleteRecursively("file.txt") } + edtWriteAction { root.createFile("file.txt") } + edtWriteAction { root.deleteRecursively("file.txt") } assertVirtualFile { readAction { root.findFile("file.txt") } } .doesNotExist() repeat(3) { - writeAction { root.createDirectory("directory/file$it.txt") } + edtWriteAction { root.createDirectory("directory/file$it.txt") } } - writeAction { root.deleteRecursively("directory") } + edtWriteAction { root.deleteRecursively("directory") } assertVirtualFile { readAction { root.findDirectory("directory") } } .doesNotExist() - writeAction { root.createFile("directory/file") } + edtWriteAction { root.createFile("directory/file") } repeat(3) { - writeAction { root.createFile("directory/file$it.txt") } + edtWriteAction { root.createFile("directory/file$it.txt") } } - writeAction { root.deleteChildrenRecursively("directory") { it.extension == "txt" } } + edtWriteAction { root.deleteChildrenRecursively("directory") { it.extension == "txt" } } assertVirtualFile { readAction { root.findDirectory("directory") } } .isExistedDirectory() assertVirtualFile { readAction { root.findFile("directory/file") } } @@ -202,7 +202,7 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { assertVirtualFile { readAction { root.findFile("directory/file$it.txt") } } .doesNotExist() } - writeAction { root.deleteChildrenRecursively("directory") { true } } + edtWriteAction { root.deleteChildrenRecursively("directory") { true } } assertVirtualFile { readAction { root.findDirectory("directory") } } .isExistedDirectory() .isEmptyDirectory() @@ -212,8 +212,8 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { @Test fun `test multi root file systems`() { runBlocking { - writeAction { root.createFile("C:/c_directory/c_file.txt") } - writeAction { root.createFile("D:/d_directory/d_file.txt") } + edtWriteAction { root.createFile("C:/c_directory/c_file.txt") } + edtWriteAction { root.createFile("D:/d_directory/d_file.txt") } val testFileSystem = MockMultiRootFileSystem(root) val root1 = testFileSystem.refreshAndFindFileByPath("C:")!! @@ -221,13 +221,13 @@ class VirtualFileUtilTest : VirtualFileUtilTestCase() { assertVirtualFile { readAction { root1.getDirectory("c_directory") } } .isNioPathEqualsTo(Path.of("C:/c_directory")) - assertVirtualFile { writeAction { root1.createFile("c_directory1/c_file.txt") } } + assertVirtualFile { edtWriteAction { root1.createFile("c_directory1/c_file.txt") } } .isEqualsTo { readAction { root1.getFile("c_directory1/c_file.txt") } } .isNioPathEqualsTo(Path.of("C:/c_directory1/c_file.txt")) assertVirtualFile { readAction { root2.getDirectory("d_directory") } } .isNioPathEqualsTo(Path.of("D:/d_directory")) - assertVirtualFile { writeAction { root2.createFile("d_directory1/d_file.txt") } } + assertVirtualFile { edtWriteAction { root2.createFile("d_directory1/d_file.txt") } } .isEqualsTo { readAction { root2.getFile("d_directory1/d_file.txt") } } .isNioPathEqualsTo(Path.of("D:/d_directory1/d_file.txt")) } diff --git a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelAsyncTest.kt b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelAsyncTest.kt index a6330b16ddce..f2137c92e2a6 100644 --- a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelAsyncTest.kt +++ b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelAsyncTest.kt @@ -3,7 +3,7 @@ package com.intellij.workspaceModel.ide import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.runWriteActionAndWait -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.platform.backend.workspace.WorkspaceModel import com.intellij.platform.backend.workspace.WorkspaceModelChangeListener import com.intellij.platform.backend.workspace.WorkspaceModelTopics @@ -112,7 +112,7 @@ class WorkspaceModelAsyncTest { } try { - writeAction { + edtWriteAction { assertEquals(true, application.isWriteAccessAllowed) workspaceModel.updateProjectModel("Test add new module synchronously") { it addEntity ModuleEntity(moduleName, emptyList(), object : EntitySource {}) diff --git a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelReactiveTest.kt b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelReactiveTest.kt index 22e247175b51..4c7ecaff8021 100644 --- a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelReactiveTest.kt +++ b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelReactiveTest.kt @@ -1,7 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.workspaceModel.ide -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.platform.backend.workspace.WorkspaceModel import com.intellij.platform.backend.workspace.workspaceModel import com.intellij.platform.workspace.storage.query.entities @@ -44,7 +44,7 @@ class WorkspaceModelReactiveTest { fun `collect data from query`() { runBlocking { val collector = ArrayList() - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("X", MySource) } } val rete = WmReactive(wm) @@ -61,7 +61,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "X") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Y", MySource) } } waitUntilAllAsserted { @@ -70,7 +70,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "Y") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Z", MySource) it addEntity NamedEntity("ZZ", MySource) @@ -86,7 +86,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "ZZZ") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("C", MySource) } wm.updateProjectModel { it addEntity NamedEntity("CC", MySource) } wm.updateProjectModel { it addEntity NamedEntity("CCC", MySource) } @@ -104,7 +104,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "CCC") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity SampleEntity2("data", true, MySource) } } @@ -112,7 +112,7 @@ class WorkspaceModelReactiveTest { assertEquals(8, collector.size) } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("A", MySource) } } @@ -137,7 +137,7 @@ class WorkspaceModelReactiveTest { fun `rename and collect data`() { runBlocking { val collector = ArrayList() - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("X", MySource) } } val rete = WmReactive(wm) @@ -154,7 +154,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "X") } - writeAction { + edtWriteAction { wm.updateProjectModel { val entity = it.resolve(NameId("X"))!! it.modifyNamedEntity(entity) { @@ -177,7 +177,7 @@ class WorkspaceModelReactiveTest { fun `request entities themselves`() { runBlocking { val collector = ArrayList() - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("X", MySource) } } val rete = WmReactive(wm) @@ -194,7 +194,7 @@ class WorkspaceModelReactiveTest { assertContains(collector.map { it.myName }, "X") } - writeAction { + edtWriteAction { wm.updateProjectModel { val entity = it.resolve(NameId("X"))!! it.modifyNamedEntity(entity) { @@ -216,7 +216,7 @@ class WorkspaceModelReactiveTest { fun `operations with query`() { runBlocking { val collector = ArrayList() - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("X", MySource) } } val rete = WmReactive(wm) @@ -233,7 +233,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "X") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Y", MySource) } } @@ -244,7 +244,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "Y") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Z", MySource) it addEntity NamedEntity("ZZ", MySource) @@ -260,7 +260,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "ZZZ") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("C", MySource) } wm.updateProjectModel { it addEntity NamedEntity("CC", MySource) } wm.updateProjectModel { it addEntity NamedEntity("CCC", MySource) } @@ -277,14 +277,14 @@ class WorkspaceModelReactiveTest { assertContains(collector, "CCC") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity SampleEntity2("data", true, MySource) } } waitUntilAllAsserted { assertEquals(8, collector.size) } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("A", MySource) } } @@ -315,7 +315,7 @@ class WorkspaceModelReactiveTest { var counter2 = 0 var counter3 = 0 var counter4 = 0 - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity ParentSubEntity("ParentData", MySource) { child = ChildSubEntity(MySource) { @@ -381,7 +381,7 @@ class WorkspaceModelReactiveTest { assertContains(collector4, "ChildData") } - writeAction { + edtWriteAction { wm.updateProjectModel { val entity = it.entities(ChildSubEntity::class.java).single() it addEntity ParentSubEntity("ParentData2", MySource) parent@{ @@ -417,7 +417,7 @@ class WorkspaceModelReactiveTest { @Test fun `delay in read`() = runBlocking { val collector = ArrayList() - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("X", MySource) } } val rete = WmReactive(wm) @@ -435,7 +435,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "X") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Y", MySource) } } waitUntilAllAsserted { @@ -444,7 +444,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "Y") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Z", MySource) } } waitUntilAllAsserted { @@ -461,7 +461,7 @@ class WorkspaceModelReactiveTest { fun `flow of entities add and remove`() = runBlocking { val collector = ArrayList() val removedCollector = ArrayList() - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("X", MySource) } } val rete = WmReactive(wm) @@ -484,7 +484,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "X") } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("Y", MySource) } } waitUntilAllAsserted { @@ -494,7 +494,7 @@ class WorkspaceModelReactiveTest { assertContains(collector, "Y") } - writeAction { + edtWriteAction { wm.updateProjectModel { it.resolve(NameId("X"))!!.also { entity -> it.removeEntity(entity) } } } waitUntilAllAsserted { @@ -507,7 +507,7 @@ class WorkspaceModelReactiveTest { // Query for entities doesn't react on changes of entities. Only on adding and remove - writeAction { + edtWriteAction { wm.updateProjectModel { it.resolve(NameId("Y"))!!.also { entity -> it.modifyNamedEntity(entity) { @@ -516,7 +516,7 @@ class WorkspaceModelReactiveTest { } } } - writeAction { + edtWriteAction { wm.updateProjectModel { it addEntity NamedEntity("C", MySource) } } diff --git a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelSubscriptionTest.kt b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelSubscriptionTest.kt index a78af7124415..f27ff9fc60a7 100644 --- a/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelSubscriptionTest.kt +++ b/platform/workspace/jps/tests/testSrc/com/intellij/workspaceModel/ide/WorkspaceModelSubscriptionTest.kt @@ -1,7 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.workspaceModel.ide -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.platform.backend.workspace.WorkspaceModel import com.intellij.platform.workspace.jps.entities.ModuleEntity import com.intellij.platform.workspace.storage.EntitySource @@ -53,7 +53,7 @@ class WorkspaceModelSubscriptionTest { val firstStorage = firstStorageChannel.receive() assertTrue(firstStorage.entities().toList().isEmpty()) - writeAction { + edtWriteAction { workspaceModel.updateProjectModel("Test add new module asynchronously") { it addEntity ModuleEntity("MyModule", emptyList(), object : EntitySource {}) } @@ -82,7 +82,7 @@ class WorkspaceModelSubscriptionTest { assertTrue(firstStorage.entities().toList().isEmpty()) repeat(5) { - writeAction { + edtWriteAction { workspaceModel.updateProjectModel { it addEntity ModuleEntity("MyModule$it", emptyList(), object : EntitySource {}) } @@ -151,7 +151,7 @@ class WorkspaceModelSubscriptionTest { fireException.complete(Unit) - writeAction { + edtWriteAction { workspaceModel.updateProjectModel { it addEntity NamedEntity("MyName", MySource) } @@ -195,7 +195,7 @@ class WorkspaceModelSubscriptionTest { awaitStarted.await() - writeAction { + edtWriteAction { repeat(10) { if (awaitFinished.isCompleted) return@repeat workspaceModel.updateProjectModel { diff --git a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/RenameModuleCommand.kt b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/RenameModuleCommand.kt index c5fb0af0386f..cc5b0d7217fd 100644 --- a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/RenameModuleCommand.kt +++ b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/RenameModuleCommand.kt @@ -1,6 +1,6 @@ package com.jetbrains.performancePlugin.commands -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.module.ModuleManager.Companion.getInstance import com.intellij.openapi.ui.playback.PlaybackContext @@ -20,7 +20,7 @@ class RenameModuleCommand(text: String, line: Int) : PerformanceCommandCoroutine throw IllegalArgumentException("No module with name: $oldName") } modifiableModel.renameModule(module, newName) - writeAction { modifiableModel.commit() } + edtWriteAction { modifiableModel.commit() } } override fun getName(): String { diff --git a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/ScrollEditorCommand.kt b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/ScrollEditorCommand.kt index e84f3a1d5a6e..f2d99436face 100644 --- a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/ScrollEditorCommand.kt +++ b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/ScrollEditorCommand.kt @@ -1,7 +1,7 @@ package com.jetbrains.performancePlugin.commands import com.intellij.openapi.application.readAction -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.editor.ScrollType import com.intellij.openapi.editor.VisualPosition import com.intellij.openapi.fileEditor.FileEditorManager @@ -21,12 +21,12 @@ class ScrollEditorCommand(text: String, line: Int): PerformanceCommandCoroutineA val timer = Timer() timer.start(NAME, true) - val editor = writeAction { checkNotNull(FileEditorManager.getInstance(context.project).selectedTextEditor) } + val editor = edtWriteAction { checkNotNull(FileEditorManager.getInstance(context.project).selectedTextEditor) } val totalLines = readAction { editor.document.lineCount } - 1 var lineToScrollTo = 0 while (lineToScrollTo <= totalLines) { - writeAction { + edtWriteAction { val logicalPosition = editor.visualToLogicalPosition(VisualPosition(lineToScrollTo, 0)) editor.scrollingModel.scrollTo(logicalPosition, ScrollType.RELATIVE) } diff --git a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/SetModuleJdkCommand.kt b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/SetModuleJdkCommand.kt index 9210fa55757e..dbf7a5206c7e 100644 --- a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/SetModuleJdkCommand.kt +++ b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/SetModuleJdkCommand.kt @@ -1,6 +1,6 @@ package com.jetbrains.performancePlugin.commands -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.roots.ModuleRootModificationUtil import com.intellij.openapi.ui.playback.PlaybackContext @@ -36,7 +36,7 @@ class SetModuleJdkCommand(text: String, line: Int) : PerformanceCommandCoroutine ModuleRootModificationUtil.updateModel(module) { model -> model.setSdk(jdk) } - writeAction { moduleManager.getModifiableModel().commit() } + edtWriteAction { moduleManager.getModifiableModel().commit() } } override fun getName(): String { diff --git a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/StopDebugProcessCommand.kt b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/StopDebugProcessCommand.kt index 288bcbb433ba..211b1a02fdc2 100644 --- a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/StopDebugProcessCommand.kt +++ b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/StopDebugProcessCommand.kt @@ -3,7 +3,7 @@ package com.jetbrains.performancePlugin.commands import com.intellij.execution.impl.ExecutionManagerImpl import com.intellij.execution.ui.RunContentDescriptor import com.intellij.execution.ui.RunContentManager -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.ui.playback.PlaybackContext import com.intellij.openapi.ui.playback.commands.PlaybackCommandCoroutineAdapter import com.intellij.xdebugger.XDebuggerManager @@ -25,7 +25,7 @@ class StopDebugProcessCommand(text: String, line: Int) : PlaybackCommandCoroutin if (debugSessions.size > 1) throw IllegalStateException("Currently running ${debugSessions.size} debug processes") var selectedContent: RunContentDescriptor? = null - writeAction { + edtWriteAction { selectedContent = RunContentManager.getInstance(context.project).getSelectedContent() ExecutionManagerImpl.stopProcess(selectedContent) } diff --git a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/WaitForVfsRefreshSelectedEditorCommand.kt b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/WaitForVfsRefreshSelectedEditorCommand.kt index fa5b7bb0436c..b370dc38f540 100644 --- a/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/WaitForVfsRefreshSelectedEditorCommand.kt +++ b/plugins/performanceTesting/core/src/com/jetbrains/performancePlugin/commands/WaitForVfsRefreshSelectedEditorCommand.kt @@ -1,6 +1,6 @@ package com.jetbrains.performancePlugin.commands -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.openapi.ui.playback.PlaybackContext import com.intellij.openapi.ui.playback.commands.PlaybackCommandCoroutineAdapter @@ -15,7 +15,7 @@ class WaitForVfsRefreshSelectedEditorCommand(text: String, line: Int) : Playback override suspend fun doExecute(context: PlaybackContext) { val editor = FileEditorManager.getInstance(context.project).selectedTextEditor if (editor == null) throw IllegalStateException("No selected editor") - writeAction { + edtWriteAction { VfsUtil.markDirtyAndRefresh(false, true, false, editor.virtualFile) } } diff --git a/plugins/yaml/backend/src/refactoring/inlineExpandConversion/YAMLInlineCollectionIntentionAction.kt b/plugins/yaml/backend/src/refactoring/inlineExpandConversion/YAMLInlineCollectionIntentionAction.kt index a9093fe49c80..7e2e5719fcf6 100644 --- a/plugins/yaml/backend/src/refactoring/inlineExpandConversion/YAMLInlineCollectionIntentionAction.kt +++ b/plugins/yaml/backend/src/refactoring/inlineExpandConversion/YAMLInlineCollectionIntentionAction.kt @@ -5,7 +5,7 @@ import com.intellij.codeInsight.intention.LowPriorityAction import com.intellij.codeInsight.intention.PsiElementBaseIntentionAction import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo import com.intellij.openapi.application.readAction -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.command.executeCommand import com.intellij.openapi.editor.Editor import com.intellij.openapi.progress.runBlockingCancellable @@ -160,9 +160,9 @@ class YAMLInlineCollectionIntentionAction : PsiElementBaseIntentionAction(), Low } internal suspend fun executeWriteAction(action: () -> T?): T? { - return writeAction { + return edtWriteAction { var x: T? = null executeCommand { x = action() } - return@writeAction x + return@edtWriteAction x } } diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/PyCharmCorePluginConfigurator.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/PyCharmCorePluginConfigurator.kt index ffac5e55164e..67c5142012e9 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/PyCharmCorePluginConfigurator.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/PyCharmCorePluginConfigurator.kt @@ -8,7 +8,7 @@ import com.intellij.ide.ApplicationInitializedListener import com.intellij.ide.util.PropertiesComponent import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.Experiments -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.ComponentManagerEx import com.intellij.openapi.components.serviceAsync import com.intellij.openapi.editor.ex.EditorSettingsExternalizable @@ -57,7 +57,7 @@ private class PyCharmCorePluginConfigurator : ApplicationInitializedListener { val fileTypeManager = FileTypeManager.getInstance() val ignoredFilesList = fileTypeManager.getIgnoredFilesList() - writeAction { + edtWriteAction { fileTypeManager.setIgnoredFilesList("$ignoredFilesList;*\$py.class") } } diff --git a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/impl/emptyProject/PyV3EmptyProjectSettings.kt b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/impl/emptyProject/PyV3EmptyProjectSettings.kt index 24f1b638ed2a..954a9c5093ee 100644 --- a/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/impl/emptyProject/PyV3EmptyProjectSettings.kt +++ b/python/ide/impl/src/com/intellij/pycharm/community/ide/impl/newProjectWizard/impl/emptyProject/PyV3EmptyProjectSettings.kt @@ -2,7 +2,7 @@ package com.intellij.pycharm.community.ide.impl.newProjectWizard.impl.emptyProject import com.intellij.openapi.application.EDT -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.application.writeIntentReadAction import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.Sdk @@ -18,7 +18,7 @@ class PyV3EmptyProjectSettings(var generateWelcomeScript: Boolean = false) : PyV override suspend fun generateProject(module: Module, baseDir: VirtualFile, sdk: Sdk): Result { if (!generateWelcomeScript) return Result.success(Unit) - val file = writeAction { + val file = edtWriteAction { PyWelcome.prepareFile(module.project, baseDir) } withContext(Dispatchers.EDT) { diff --git a/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/sdkFixture.kt b/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/sdkFixture.kt index fb994420bfbd..05a3ffbdd25f 100644 --- a/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/sdkFixture.kt +++ b/python/junit5Tests-framework/src/com/intellij/python/junit5Tests/framework/env/sdkFixture.kt @@ -1,7 +1,7 @@ // Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.intellij.python.junit5Tests.framework.env -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.python.community.testFramework.testEnv.PythonType @@ -33,7 +33,7 @@ fun pySdkFixture( val (sdk, autoClosable, env) = pythonType.createSdkClosableEnv().getOrThrow() sdk.persist() initialized(SdkFixture(sdk, env)) { - writeAction { + edtWriteAction { ProjectJdkTable.getInstance().removeJdk(sdk) autoClosable.close() } diff --git a/python/python-sdk/src/com/jetbrains/python/sdk/PySdkCoreTools.kt b/python/python-sdk/src/com/jetbrains/python/sdk/PySdkCoreTools.kt index d64aa8bc2b62..3d03af898b50 100644 --- a/python/python-sdk/src/com/jetbrains/python/sdk/PySdkCoreTools.kt +++ b/python/python-sdk/src/com/jetbrains/python/sdk/PySdkCoreTools.kt @@ -1,7 +1,7 @@ package com.jetbrains.python.sdk import com.intellij.openapi.application.ApplicationManager -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.jetbrains.python.sdk.flavors.PythonSdkFlavor @@ -47,7 +47,7 @@ fun Sdk.getOrCreateAdditionalData(): PythonSdkAdditionalData { /** * Saves SDK to the project table if there is no sdk with same name */ -suspend fun Sdk.persist(): Unit = writeAction { +suspend fun Sdk.persist(): Unit = edtWriteAction { if (ProjectJdkTable.getInstance().findJdk(name) == null) { // Saving 2 SDKs with same name is an error getOrCreateAdditionalData() // additional data is always required ProjectJdkTable.getInstance().addJdk(this) diff --git a/python/python-venv/tests/com/intellij/python/community/impl/venv/tests/pyVenvFixture.kt b/python/python-venv/tests/com/intellij/python/community/impl/venv/tests/pyVenvFixture.kt index a77c513f8c40..6bdbf5a31d40 100644 --- a/python/python-venv/tests/com/intellij/python/community/impl/venv/tests/pyVenvFixture.kt +++ b/python/python-venv/tests/com/intellij/python/community/impl/venv/tests/pyVenvFixture.kt @@ -2,7 +2,7 @@ package com.intellij.python.community.impl.venv.tests import com.intellij.openapi.application.EDT -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.module.Module import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk @@ -41,7 +41,7 @@ fun TestFixture>.pyVenvFixture( } } initialized(venvSdk) { - writeAction { + edtWriteAction { ProjectJdkTable.getInstance().removeJdk(venvSdk) } } diff --git a/python/src/com/jetbrains/python/newProjectWizard/PyV3ProjectBaseGenerator.kt b/python/src/com/jetbrains/python/newProjectWizard/PyV3ProjectBaseGenerator.kt index 1fe01a0bdf94..4673c848fd27 100644 --- a/python/src/com/jetbrains/python/newProjectWizard/PyV3ProjectBaseGenerator.kt +++ b/python/src/com/jetbrains/python/newProjectWizard/PyV3ProjectBaseGenerator.kt @@ -3,7 +3,7 @@ package com.jetbrains.python.newProjectWizard import com.intellij.facet.ui.ValidationResult import com.intellij.openapi.application.EDT -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.module.Module @@ -73,7 +73,7 @@ abstract class PyV3ProjectBaseGenerator> internal suspend fun refreshPaths() { - writeAction { + edtWriteAction { // Background refreshing breaks structured concurrency: there is a some activity in background that locks files. // Temporary folders can't be deleted on Windows due to that. // That breaks tests. diff --git a/python/src/com/jetbrains/python/sdk/conda/PyAddCondaTools.kt b/python/src/com/jetbrains/python/sdk/conda/PyAddCondaTools.kt index 5bb16724d647..e6637ca113ff 100644 --- a/python/src/com/jetbrains/python/sdk/conda/PyAddCondaTools.kt +++ b/python/src/com/jetbrains/python/sdk/conda/PyAddCondaTools.kt @@ -9,7 +9,7 @@ import com.intellij.execution.processTools.getResultStdoutStr import com.intellij.execution.processTools.mapFlat import com.intellij.execution.target.* import com.intellij.execution.target.local.LocalTargetEnvironmentRequest -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.progress.EmptyProgressIndicator import com.intellij.openapi.progress.ProgressIndicator @@ -69,7 +69,7 @@ suspend fun PyCondaCommand.createCondaSdkFromExistingEnv( // homePath is not required by conda, but used by lots of tools all over the code and required by CondaPathFix // Because homePath is not set yet, CondaPathFix does not work sdkModificator.homePath = getCondaPythonBinaryPath(project, condaEnv, targetConfig).getOrThrow() - writeAction { + edtWriteAction { sdkModificator.commitChanges() } saveLocalPythonCondaPath(Path.of(fullCondaPathOnTarget)) diff --git a/python/src/com/jetbrains/python/sdk/service/PySdkService.kt b/python/src/com/jetbrains/python/sdk/service/PySdkService.kt index 74151748b32f..8fe40e690660 100644 --- a/python/src/com/jetbrains/python/sdk/service/PySdkService.kt +++ b/python/src/com/jetbrains/python/sdk/service/PySdkService.kt @@ -1,7 +1,7 @@ // Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. package com.jetbrains.python.sdk.service -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.components.Service import com.intellij.openapi.components.service import com.intellij.openapi.project.Project @@ -31,7 +31,7 @@ class PySdkService private constructor(private val project: Project) { */ suspend fun persistSdk(sdk: Sdk): Unit = coroutineScope { mutex.withLock { - writeAction { + edtWriteAction { if (!sdkExists(sdk)) { with(model) { addSdk(sdk) diff --git a/python/testFramework/src/com/jetbrains/python/tools/sdk.kt b/python/testFramework/src/com/jetbrains/python/tools/sdk.kt index f004a43c8ac3..c2c6f204ef67 100644 --- a/python/testFramework/src/com/jetbrains/python/tools/sdk.kt +++ b/python/testFramework/src/com/jetbrains/python/tools/sdk.kt @@ -3,7 +3,7 @@ package com.jetbrains.python.tools import com.intellij.execution.target.FullPathOnTarget import com.intellij.execution.target.TargetEnvironmentConfiguration -import com.intellij.openapi.application.writeAction +import com.intellij.openapi.application.edtWriteAction import com.intellij.openapi.projectRoots.ProjectJdkTable import com.intellij.openapi.projectRoots.Sdk import com.intellij.python.community.testFramework.testEnv.PythonType @@ -51,7 +51,7 @@ suspend fun createSdk(request: SdkCreationRequest): Pair = w sdkModificator.apply { homePath = PYTHON_PATH_ON_TARGET sdkAdditionalData = targetData - writeAction { + edtWriteAction { commitChanges() } }