assert that directory index must be accessed (created) in a read action phpstorm/173.2206
authorpeter <peter@jetbrains.com>
Fri, 8 Sep 2017 10:58:48 +0000 (12:58 +0200)
committerpeter <peter@jetbrains.com>
Fri, 8 Sep 2017 10:59:40 +0000 (12:59 +0200)
platform/projectModel-api/src/com/intellij/openapi/roots/FileIndex.java
platform/projectModel-api/src/com/intellij/openapi/roots/ModuleFileIndex.java
platform/projectModel-api/src/com/intellij/openapi/roots/ProjectFileIndex.java
platform/projectModel-impl/src/com/intellij/openapi/roots/impl/RootIndex.java

index 0c190d915e473c9ec9c3150b96d6cf0eb6804efe..373bed131df49c3a9c07a40c2e8782554b6d5fc5 100644 (file)
@@ -25,7 +25,7 @@ import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
 import java.util.Set;
 
 /**
- * Provides information about files contained in a project or module.
+ * Provides information about files contained in a project or module. Should be used from a read action.
  *
  * @see ProjectRootManager#getFileIndex()
  * @see ModuleRootManager#getFileIndex()
index 30142b63a2c74d50fdcb535aa0c73afdd1898b58..fc825865bee1029d22b120d53a64560e116cb1ba 100644 (file)
@@ -22,7 +22,7 @@ import org.jetbrains.annotations.Nullable;
 import java.util.List;
 
 /**
- * Provides information about files contained in a module.
+ * Provides information about files contained in a module. Should be used from a read action.
  *
  * @see ModuleRootManager#getFileIndex()
  *
index df0d66f79967c2dbd1f3bdd48e1a673a2438ede0..6561ace8f736a658b39899a76bbb9f632a67a8a1 100644 (file)
@@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable;
 import java.util.List;
 
 /**
- * Provides information about files contained in a project.
+ * Provides information about files contained in a project. Should be used from a read action.
  *
  * @see ProjectRootManager#getFileIndex()
  */
index f65fd597af7e0657d3276d0a3eece02655d1fc8e..4bfdc944b17d6b073dab9b1f11885bb7f0e4af31 100644 (file)
@@ -15,6 +15,7 @@
  */
 package com.intellij.openapi.roots.impl;
 
+import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.extensions.Extensions;
 import com.intellij.openapi.fileTypes.FileTypeRegistry;
@@ -73,6 +74,9 @@ public class RootIndex {
   public RootIndex(@NotNull Project project, @NotNull InfoCache cache) {
     myProject = project;
     myInfoCache = cache;
+
+    ApplicationManager.getApplication().isReadAccessAllowed();
+
     final RootInfo info = buildRootInfo(project);
 
     MultiMap<String, VirtualFile> rootsByPackagePrefix = MultiMap.create();
@@ -234,7 +238,7 @@ public class RootIndex {
     for (UnloadedModuleDescription description : moduleManager.getUnloadedModuleDescriptions()) {
       for (VirtualFilePointer pointer : description.getContentRoots()) {
         VirtualFile contentRoot = pointer.getFile();
-        if (contentRoot != null) {
+        if (contentRoot != null && ensureValid(contentRoot, description)) {
           info.contentRootOfUnloaded.put(contentRoot, description.getName());
         }
       }