From ca0e6a3af9eed88ed72fb993385f70f907285cd9 Mon Sep 17 00:00:00 2001 From: Max Medvedev Date: Sat, 15 Nov 2025 11:52:22 +0100 Subject: [PATCH] Revert "IJPL-339 [psi] send children-move events on moving file" This reverts commit 3680be174243072188b696534941cffb1bce3396. GitOrigin-RevId: 0661fdb84b10b5f75897e349346e0998b52756f2 --- .../psi/impl/file/impl/PsiVFSListener.kt | 32 ++++++------------- .../impl/file/impl/MultiversePsiEventTest.kt | 16 ---------- 2 files changed, 9 insertions(+), 39 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.kt b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.kt index ee2b36f6ddcb..c21b3fddc95c 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.kt +++ b/platform/lang-impl/src/com/intellij/psi/impl/file/impl/PsiVFSListener.kt @@ -451,38 +451,24 @@ private class PsiVFSListener(private val project: Project) { } ApplicationManager.getApplication().runWriteAction(ExternalChangeActionUtil.externalChangeAction { + val treeEvent = PsiTreeChangeEventImpl(manager) val isExcluded = vFile.isDirectory && Registry.`is`("ide.hide.excluded.files") && myProjectRootManager.fileIndex.isExcluded(vFile) if (oldParentDir != null && !isExcluded) { - - // a list of: - // - one or several not-null PsiFiles - // - one not-null PsiDirectory - // - single 'null' if corresponding PsiDirectory or PsiFile cannot be created - val eventChildren: List = if (vFile.isDirectory) { - listOf(fileManager.findDirectory(vFile)) + val eventChild = if (vFile.isDirectory) fileManager.findDirectory(vFile) else fileManager.findFile(vFile) + treeEvent.child = eventChild + if (newParentDir != null) { + treeEvent.oldParent = oldParentDir + treeEvent.newParent = newParentDir + manager.beforeChildMovement(treeEvent) } else { - fileManager.getCachedPsiFiles(vFile).ifEmpty { listOf(fileManager.findFile(vFile)) } - } - - for (eventChild in eventChildren) { - val treeEvent = PsiTreeChangeEventImpl(manager) - treeEvent.child = eventChild - if (newParentDir != null) { - treeEvent.oldParent = oldParentDir - treeEvent.newParent = newParentDir - manager.beforeChildMovement(treeEvent) - } - else { - treeEvent.parent = oldParentDir - manager.beforeChildRemoval(treeEvent) - } + treeEvent.parent = oldParentDir + manager.beforeChildRemoval(treeEvent) } } else { // checked above LOG.assertTrue(newParentDir != null) - val treeEvent = PsiTreeChangeEventImpl(manager) treeEvent.parent = newParentDir manager.beforeChildAddition(treeEvent) } diff --git a/platform/lang-impl/testSources/com/intellij/psi/impl/file/impl/MultiversePsiEventTest.kt b/platform/lang-impl/testSources/com/intellij/psi/impl/file/impl/MultiversePsiEventTest.kt index 2fb168bfb88c..2c6d06d84b95 100644 --- a/platform/lang-impl/testSources/com/intellij/psi/impl/file/impl/MultiversePsiEventTest.kt +++ b/platform/lang-impl/testSources/com/intellij/psi/impl/file/impl/MultiversePsiEventTest.kt @@ -40,7 +40,6 @@ internal class MultiversePsiEventTest { private val module2 = projectFixture.moduleFixture("m2") private val sourceRoot = sharedSourceRootFixture(module1, module2) - private val sourceRoot2 = sharedSourceRootFixture(module1, module2) @Suppress("unused") private val registerFakeLang = testFixture { @@ -267,21 +266,6 @@ internal class MultiversePsiEventTest { expectedEventNumber = 2 ) - @Test - fun `test we receive 2 before-child-moved events on moving a file with 2 psi files`() = doChangeTest( - listenerFactory = { counter -> - object : PsiTreeChangeAdapter() { - override fun beforeChildMovement(event: PsiTreeChangeEvent) { - counter.incrementAndGet() - } - } - }, - updateBlock = { file -> - file.move(this, sourceRoot2.get().virtualFile) - }, - expectedEventNumber = 2 - ) - private fun doChangeTest( listenerFactory: (AtomicInteger) -> PsiTreeChangeListener, updateBlock: (file: VirtualFile) -> Unit,