diff --git a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/DirtyScopeHolder.java b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/DirtyScopeHolder.java index d041f24fbd32..93cb5893dc8f 100644 --- a/java/compiler/impl/src/com/intellij/compiler/backwardRefs/DirtyScopeHolder.java +++ b/java/compiler/impl/src/com/intellij/compiler/backwardRefs/DirtyScopeHolder.java @@ -119,14 +119,19 @@ public class DirtyScopeHolder extends UserDataHolderBase { void compilerActivityFinished(Module[] affectedModules) { compilationFinished(() -> { - final ModuleManager moduleManager = ModuleManager.getInstance(myService.getProject()); - final List compiledModules = myCompilationAffectedModules.stream().map(moduleManager::findModuleByName).collect(Collectors.toList()); + final List compiledModules = ReadAction.compute(() -> { + final Project project = myService.getProject(); + if (project.isDisposed()) { + return null; + } + final ModuleManager moduleManager = ModuleManager.getInstance(myService.getProject()); + return myCompilationAffectedModules.stream().map(moduleManager::findModuleByName).collect(Collectors.toList()); + }); + if (compiledModules == null) return; - myVFSChangedModules.removeAll(compiledModules); - - final Set unCompiledModules = ContainerUtil.newHashSet(affectedModules); - unCompiledModules.removeAll(compiledModules); - myVFSChangedModules.removeAll(unCompiledModules); + Set dirtyModulesAfterCompilation = ContainerUtil.set(affectedModules); + dirtyModulesAfterCompilation.removeAll(compiledModules); + ContainerUtil.addAll(myVFSChangedModules, dirtyModulesAfterCompilation); }); }