optimization: fewer getInfoForFile() calls
[idea/community.git] / platform / projectModel-impl / src / com / intellij / openapi / roots / impl / ProjectFileIndexFacade.java
index d8fcf3b52b60da9c6d463d197c706dcfec84d9e7..fa6bf75721116557e9db304c4842c98738fdc513 100644 (file)
@@ -16,6 +16,7 @@
 
 package com.intellij.openapi.roots.impl;
 
+import com.intellij.injected.editor.VirtualFileWindow;
 import com.intellij.openapi.module.Module;
 import com.intellij.openapi.module.ModuleManager;
 import com.intellij.openapi.module.UnloadedModuleDescription;
@@ -108,4 +109,14 @@ public class ProjectFileIndexFacade extends FileIndexFacade {
   public Collection<UnloadedModuleDescription> getUnloadedModuleDescriptions() {
     return ModuleManager.getInstance(myProject).getUnloadedModuleDescriptions();
   }
+
+  @Override
+  public boolean isInContentExceptLibraryClassesWithoutSources(@NotNull VirtualFile file) {
+    // optimization: equivalent to the super method but has fewer getInfoForFile() calls
+    if (file instanceof VirtualFileWindow) return true;
+    DirectoryInfo info = myDirectoryIndex.getInfoForFile(file);
+    if (!info.isInProject(file)) return false;
+    if (info.hasLibraryClassRoot() && !info.isInModuleSource(file)) return false;
+    return info.getModule() != null;
+  }
 }