[threading] IJPL-149765: Rename writeAction to edtWriteAction #6

GitOrigin-RevId: 635c50933068a86ac0bf62608185bd359c7ac98c
This commit is contained in:
Konstantin Nisht
2025-02-19 22:13:13 +00:00
committed by intellij-monorepo-bot
parent 00dd727573
commit b6d3690b12
32 changed files with 141 additions and 141 deletions
@@ -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<SaveSession>, saveResult: SaveResult) {
if (isUseVfsForWrite) {
writeAction {
edtWriteAction {
for (saveSession in saveSessions) {
saveSessionBlocking(saveSession, saveResult)
}
@@ -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)
@@ -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))
@@ -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
@@ -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()
}
}
@@ -648,7 +648,7 @@ object ProjectUtil {
runInAutoSaveDisabledMode {
saveSettings(componentManager = project, forceSavingAllSettings = true)
}
writeAction {
edtWriteAction {
Disposer.dispose(project)
}
projectFile = file
@@ -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 ->
@@ -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)
@@ -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<CancellationException> {
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)
}
}
@@ -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<java.lang.IllegalStateException> {
runBlockingCancellable {
}
@@ -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)
}
}
@@ -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) }
}
/**
@@ -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<IOException>("""
|File already exists: .*/file.txt
| basePath = .*
| relativePath = file.txt
""".trimMargin())
assertVirtualFile { writeAction { root.createDirectory("directory") } }
assertVirtualFile { edtWriteAction { root.createDirectory("directory") } }
.isFailedWithException<IOException>("""
|Directory already exists: .*/directory
| basePath = .*
| relativePath = directory
""".trimMargin())
assertVirtualFile { writeAction { root.findOrCreateFile("directory") } }
assertVirtualFile { edtWriteAction { root.findOrCreateFile("directory") } }
.isFailedWithException<IOException>("""
|Expected file instead of directory: .*/directory
| basePath = .*
| relativePath = directory
""".trimMargin())
assertVirtualFile { writeAction { root.findOrCreateDirectory("file.txt") } }
assertVirtualFile { edtWriteAction { root.findOrCreateDirectory("file.txt") } }
.isFailedWithException<IOException>("""
|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<IOException>("""
|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<IOException>("""
|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"))
}
@@ -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 {})
@@ -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<String>()
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<String>()
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<NamedEntity>()
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<String>()
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<String>()
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<String>()
val removedCollector = ArrayList<String>()
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) }
}
@@ -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<ModuleEntity>().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<ModuleEntity>().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 {
@@ -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 {
@@ -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)
}
@@ -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 {
@@ -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)
}
@@ -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)
}
}
@@ -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 <T> executeWriteAction(action: () -> T?): T? {
return writeAction {
return edtWriteAction {
var x: T? = null
executeCommand { x = action() }
return@writeAction x
return@edtWriteAction x
}
}
@@ -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")
}
}
@@ -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<Unit, PyError> {
if (!generateWelcomeScript) return Result.success(Unit)
val file = writeAction {
val file = edtWriteAction {
PyWelcome.prepareFile(module.project, baseDir)
}
withContext(Dispatchers.EDT) {
@@ -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 <ENV : Any> pySdkFixture(
val (sdk, autoClosable, env) = pythonType.createSdkClosableEnv().getOrThrow()
sdk.persist()
initialized(SdkFixture<ENV>(sdk, env)) {
writeAction {
edtWriteAction {
ProjectJdkTable.getInstance().removeJdk(sdk)
autoClosable.close()
}
@@ -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)
@@ -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<SdkFixture<PythonBinary>>.pyVenvFixture(
}
}
initialized(venvSdk) {
writeAction {
edtWriteAction {
ProjectJdkTable.getInstance().removeJdk(venvSdk)
}
}
@@ -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<TYPE_SPECIFIC_SETTINGS : PyV3ProjectType
}
withContext(Dispatchers.EDT) {
writeAction {
edtWriteAction {
VirtualFileManager.getInstance().syncRefresh()
}
}
@@ -2,7 +2,7 @@
package com.jetbrains.python.packaging.management
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.writeAction
import com.intellij.openapi.application.edtWriteAction
import com.intellij.openapi.components.service
import com.intellij.openapi.diagnostic.thisLogger
import com.intellij.openapi.project.Project
@@ -90,7 +90,7 @@ abstract class PythonPackageManager(val project: Project, val sdk: Sdk) {
protected abstract suspend fun reloadPackagesCommand(): Result<List<PythonPackage>>
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.
@@ -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))
@@ -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)
@@ -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<Sdk, AutoCloseable> = w
sdkModificator.apply {
homePath = PYTHON_PATH_ON_TARGET
sdkAdditionalData = targetData
writeAction {
edtWriteAction {
commitChanges()
}
}